Android - 如何使用视图制作复杂的标签式应用

HeM*_*odd 7 architecture tabs android views

关于Stack Overflow的第一个问题,如果它没有很好地形成则道歉.

我正在开发一个相对复杂的选项卡式的应用程序,并且已经有了基本建立起覆盖信息,敬请说的ActivityGroup和TabActivity已被弃用之前,优选的模式是使用视图.

我在使用视图方面没有遇到任何问题,这是关于体系结构而不是语法的问题(这就是为什么我没有发布任何代码).具体来说,我应该如何重组应用程序以使用视图而不是Intent启动的活动.

该应用有五个选项卡; 两个持有单一布局,没有问题.其他三个选项卡正在运行具有2-5个不同活动的ActivityGroup(即运行设置活动的选项卡,其中单击每个视图会启动一个处理该特定设置的新活动,按后退按钮可返回更广泛的设置活动/视图).如果我将每个Tab保持为TabActivity,那么将这些内部转换更改为视图仍然相当容易,而不是单独的活动.

主要问题是使用ONLY视图,根本没有TabActivity/Activity组.我所做的绝大多数研究都是讨论是否使用"活动"或"视图",或者是否使用特定语法.我无法清楚地了解如何实际转换到整个应用程序中的视图.

  1. 如果我这样做,整个应用程序现在不会在一个Activity中运行 - 一个托管标签布局的活动?

  2. 如果(1)为真,如何管理?尽管不推荐使用ActivityGroup,但所有Android文档似乎仍然表明,对于功能的各个方面,最好使用单独的活动 - 这是有道理的.Android开发团队是否只是决定堆栈和设备的成本使TabActivity实现无效?

  3. 如果应用程序在一个Activity中运行,该Activity管理每个选项卡的不同视图(然后在必要时在一个选项卡中包含不同的视图),我是否应该使用一个巨大的onClick方法来处理来自任何可点击视图的所有点击,处理输入基于哪个视图是否有效?或者我应该以编程方式注册和取消注册我的所有听众?

  4. 使用单个Activity,任何点击侦听器或任何广播接收器都不会一直运行,即使在不必要的情况下也会消耗资源吗?

  5. 使用单个Activity,后退按钮将从其功能中的任何位置退出整个应用程序.如果我正在使用视图,我是否不得不一直覆盖onBackPressed()并仔细管理应用程序行为以强制它"像Android应用程序一样"?

  6. 我觉得这完全错了吗?当我应该采用完全不同的设计方法来使用制表符和视图时,我可能无意中尝试使用视图重新创建ActivityGroup和TabActivity功能.

当谷歌的人们说我们不再将活动当作标签时,马克墨菲先生如此强烈赞同,我倾向于相信.我根本无法研究一种切换方式,而无需手动重新创建大量的Activity功能(可能包括各种脏黑客).

任何愿意解决这种模糊和被覆盖的主题的人都要提前感谢.

Han*_*oit 2

使用Fragments是执行选项卡式 ui 组件的新标准,我认为您一定忽略了它们,因为它们是您上述所有问题所缺少的部分。祝你好运。

不要忘记,使用兼容性库会将 Fragment 支持一直带回到 1.6。

Google 推荐的关于在 TabHost 中使用 Fragment 的简单教程。