我们正在编写一个具有4个标签的应用程序:地图,人物,地点,活动.应用程序中的人物,地点和事件在地图上显示为图标.默认情况下,“人物”,“地点”和“事件”选项卡分别显示列表视图,自定义渲染,分别显示所有“人物”,“地点”和“事件”.
@H_404_2@alt text http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adcb134-scaled.png
@H_404_2@现在,现在每个选项卡都有一个Intent设置为启动相应的活动.例如,有一个MapTabActivity扩展了MapActivity,一个ShowPeopleListActivity显示了人物,等等.
@H_404_2@我看到一个lot of StackOverflow questions /答案说,由于TabHost的设置方式的各种限制,最好不要使用活动作为选项卡的内容.例如,不可能启动一个新的活动,并取代现有活动在一个选项卡,而可以切换一个视图与不同的视图.
@H_404_2@现在,我在十字路口.我们(或更好或更坏)投入了大量的时间试图让这个应用程序的工作方式,目前的结构,活动作为选项卡的内容.当单击与人物,地点或事件对应的图标时,它将触发与该对象相对应的URI上的VIEW意图;这是一个Activity,然后显示对象.地图和个人列表中都有相同的机制.我们真的喜欢这个给我们提供的松耦合;我们只是给一个VIEW命令和URI给人/地点/事件,它会自动带给我们正确的活动.可以说,开展的活动涵盖了标签视图,而不是出现在这个视图中,但我们愿意与此共同生活.
@H_404_2@这里有一个问题:从展会活动中,我们希望能够回到地图上,以人,地点或事件为中心.我们可以启动一个新的活动来再次显示地图,但现在我们将地图活动作为选项卡的内容,再加上展示活动,加上活动堆栈中的新地图活动;鉴于地图活动的资源密集程度,我猜这不是理想的方式.
@H_404_2@我想我的问题是,有没有一个好的教程在哪里显示如何使用TabHost做复杂的任务?我看过HelloTabWidget;我正在寻找比这更复杂的东西.我担心如果我们切换到基于View的做事方式,我们必须做很多内务来截取所有的后台事件,尝试切换视图等,以及以我们不想要的方式强烈地耦合我们的程序.
@H_404_2@对前进道路的任何建议将非常感谢.我们是Android的新手,所以我们试图遵循既定的最佳做法,但是当我们看到的几个例子对我们的用例来说太简单时,这很难.
解决方法
@H_404_2@I see a lot of StackOverflow@H_404_2@作为反职业联盟(AATA)的自主任主席,这当然是我的立场.
questions/answers saying that due to
varIoUs limitations in the way the
TabHost is setup,it’s best NOT to use
activities as the content of tabs.
@H_404_2@When an icon corresponding to a@H_404_2@请注意,这与将活动作为选项卡的内容无关.
Person,Place,or Event is clicked,it
fires off a VIEW Intent on a URI
corresponding to that object; this is
picked up by an Activity that then
shows the object.
@H_404_2@We can launch a new activity to show@H_404_2@我可以避免它.
the map again,but now we have the map
activity as the content of the tab,
plus the show activity,plus the new
map activity in the activity stack;
given how resource intensive the map
activity is,I’m guessing this is not
the ideal way to go.
@H_404_2@I’m worried that if we switch to the@H_404_2@这完全不符合你以前写过的内容.使用“视图”作为选项卡的内容并使用“活动”作为选项卡的内容,您的“后退事件”将不会更改iota.此外,这与您所描述的“松散耦合”模式无关,点击标签中视图中的列表中的图标与点击活动视图中的列表中的图标没有什么不同一个标签 @H_404_2@只要让你的Show活动告诉你的主要活动来显示一个特定的位置,那么Show活动可以完成().在没有在活动之间引入硬JVM耦合的情况下,最简单的方法是广播Intent并在主要活动中注册BroadcastReceiver.收到此意图后,主要活动将更新地图并将其设置为当前选项卡.当然,如果您的主要活动使用其选项卡内容的视图,则此方法更为简单. @H_404_2@现在,如果您尝试检查您的应用程序,那么在选项卡中导航不会启动另一个活动,而是将内容保留在自己的选项卡中…这是一个完整的“水壶”.
View based way of doing things,we’ll
have to do a LOT of housekeeping to
intercept all the back events,try to
switch out the views,etc.,as
well as strongly coupling our program
in a way we don’t want.