我们正在编写一个有 4 个选项卡的应用程序:地图、人物、地点、事件。应用程序中的人物、地点和事件在地图上显示为图标。默认情况下,人物、地点和事件选项卡每个都显示一个列表视图,自定义呈现,分别显示所有人物、地点和事件。
替代文字 http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adcb134-scaled.png
现在,现在每个选项卡都有一个 Intent 集作为其内容,以启动相应的活动。例如,有一个扩展 MapActivity 的 MapTabActivity,一个显示人员的 ShowPeopleListActivity,等等。
我看到很多 StackOverflow问题/答案说由于 TabHost 设置方式的各种限制,最好不要将活动用作选项卡的内容。 例如,不可能启动一个新活动并让它取代选项卡中的现有活动,但可以用不同的视图切换视图。
现在,我正处于十字路口。我们(无论好坏)投入了相当多的时间,试图让这个应用程序以它当前的结构方式工作,将活动作为选项卡的内容。当点击对应于人物、地点或事件的图标时,它会在对应于该对象的 URI 上触发 VIEW Intent;这是由一个 Activity 拾取的,然后显示该对象。同样的机制在 Map 和单个列表中都起作用。我们真的很喜欢这为我们提供的松散耦合;我们只需给出一个 VIEW 命令和人/地点/事件的 URI,它就会自动将我们带到正确的活动。诚然,启动的活动掩盖了选项卡视图,而不是出现在其中,但我们愿意接受这一点。
但这里有一个问题:从 Show 活动中,我们希望能够返回以该人、地点或事件为中心的地图。我们可以再次启动一个新的activity来展示地图,但是现在我们有了map activity作为tab的内容,加上show activity,再加上activity stack中的新map activity;考虑到地图活动的资源密集程度,我猜这不是理想的方式。
我想我的问题是,是否有一个很好的教程可以准确地展示如何使用 TabHost 完成复杂的任务?我见过HelloTabWidget;我正在寻找比这更复杂的东西。我担心如果我们切换到基于视图的做事方式,我们将不得不做很多内务来拦截所有的后台事件,尝试切换视图等,等等,以及以我们不想要的方式强耦合我们的程序。
任何关于前进道路的建议将不胜感激。我们是 Android 新手,因此我们正在尝试遵循已建立的最佳实践,但是当我们看到的少数示例对于我们的用例而言过于简单时,这会很困难。