如何制作带有视图的复杂标签式应用
关于堆栈溢出的第一个问题,如果它没有正确形成,则表示歉意。
我正在开发一个相对复杂的选项卡式应用程序,并且在遇到不赞成使用ActivityGroup和TabActivity的信息之前已经设置了基本知识,并且首选模型是使用视图。
我没有使用视图的麻烦,这是一个关于架构而不是语法的问题(这就是为什么我没有发布任何代码)。 具体来说,我应该如何重组应用程序以使用视图而不是Intent已启动的活动。
该应用程序有五个选项卡; 两个拥有一个布局,没有问题。 其他三个选项卡正在运行一个具有2-5个不同活动的ActivityGroup(即一个运行设置活动的选项卡,其中单击每个视图会启动一个处理该特定设置的新Activity,按下后退按钮可返回到更广泛的设置活动/视图)。 如果我将每个Tab都保留为TabActivity,那么将这些内部转换更改为视图仍然相当容易,而不是单独的活动。
主要问题是仅使用视图,根本没有TabActivity / Activity组。 我所做的绝大多数研究一直在讨论是否使用活动或视图,或关于特定语法。 我一直无法清楚地知道如何在整个应用程序中实现向视图的转换。
如果我这样做了,那么现在整个应用程序不会在单个活动中运行 - 托管标签式布局的活动?
如果(1)是真的,如何管理? 尽管ActivityGroup被弃用,但所有的Android文档似乎仍然声称,对于功能的不同方面,最好使用单独的活动 - 这是有道理的。 Android开发团队是否简单地决定堆栈和设备的成本使TabActivity实现无效?
如果应用程序在单个Activity中运行,并为每个选项卡管理不同的视图(并在必要时在不同的视图内进行选择),我是否应该有一个巨大的onClick方法来处理来自任何可点击视图的所有点击,处理基于哪个输入视图是活动的? 还是应该以编程方式注册并取消所有听众的注册?
通过单个活动,任何点击监听器或任何广播接收器都不会运行,即使在不必要时也会消耗资源?
使用单个活动,后退按钮将从其功能的任何位置退出整个应用程序。 如果我使用视图,是否必须一致地重写onBackPressed()并仔细管理应用行为以强制它像“Android应用”一样行为?
上午我在想这个完全错误? 我可能无意中尝试用视图重新创建ActivityGroup和TabActivity功能,而当我采用完全不同的设计方法来使用制表符和视图时。
当谷歌的人们说我们不应该再把活动当作标签时,马克墨菲先生就强调这一点,我倾向于相信。 我根本无法研究切换方式,而无需手动重新创建大量的活动功能(可能包括各种肮脏的黑客攻击)。
对于愿意处理这种模糊和重写的话题的任何人提前感谢。
使用Fragments是执行选项卡式UI组件的新标准,我认为你必须忽略它们,因为它们是上述所有问题的缺失部分。 祝你好运。
不要忘记,使用兼容性库将Fragment支持一路推回到1.6。
这里是一个简单的Google推荐教程,介绍如何在TabHost中使用Fragments。
关于3)将您的应用程序分成多个活动,因为您拥有应用程序的不同部分。 今天我甚至会选择Fragements,当你为手机和平板电脑制作应用程序时,它们可以更容易地组合成不同的布局。 大多数情况下,您可以在各自的xml布局定义文件中设置onClick
监听器,如下所示:
<ImageButton
android:id="@+id/new_tweet_back_button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="left"
android:onClick="done"
android:src="@drawable/back_button"
android:layout_below="@id/CharCount"
/>
这里android:onClick
属性指向一个实现处理程序的方法。 你不需要注销任何东西。
而不是选项卡,我会选择ViewPager,通过左右滑动来交换视图(请参阅例如G +应用程序或市场应用程序),使其更加自然,
作为我自己问题的最终答案:
在标签DID中使用片段解决了上述所有问题。
因此,我没有定义包含其他活动的选项卡,而是使用了一个大的FragmentActivity来设置和切换各个片段的视图。 每个选项卡视图在XML中定义的点击方法属于FragmentActivity,我选择让每个onClick在适当的片段中调用相应的方法(如果需要,传递上下文),以便以编程方式操作每个视图的代码可以保留在适当的班级。
这是一款使用兼容性套件的手机,不是平板电脑或Honeycomb,所以我不能为那些不幸的人说话。
这个解决方案似乎对我来说效果很好。 我建议任何人查看相同的问题来查看:
thepsuedocoder博客文章:http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/
关于Fragments的Android文档:http://developer.android.com/guide/topics/fundamentals/fragments.html
API演示“片段选项卡”http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/index.html#Fragment
链接地址: http://www.djcxy.com/p/10391.html