首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -如何制作一个带有视图的复杂选项卡式应用程序

Android -如何制作一个带有视图的复杂选项卡式应用程序
EN

Stack Overflow用户
提问于 2012-02-01 21:20:39
回答 3查看 2.4K关注 0票数 7

关于堆栈溢出的第一个问题,如果没有很好的格式,请道歉。

我正在开发一个相对复杂的选项卡式应用程序,并且在了解到ActivityGroup和TabActivity不受欢迎的信息之前已经完成了基本设置,而首选的模型是使用视图。

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

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

主要问题是只使用视图,根本不使用TabActivity/Activity。我所做的绝大多数研究都是讨论是使用活动还是视图,还是使用特定的语法。对于如何在整个应用程序中实际过渡到视图,我还没有收集到一个清晰的概念。

  1. 如果我这么做的话,整个应用程序现在不是在一个单一的活动中运行吗?
  2. 如果(1)是真的,该如何处理?尽管ActivityGroup遭到了反对,但所有的Android文档似乎仍然表明,它倾向于在功能的不同方面使用单独的活动--这是有意义的。安卓开发团队是否简单地决定了堆栈和设备的成本使得TabActivity实现无效?
  3. 如果应用程序在单个活动中运行,该活动管理每个选项卡的不同视图(必要时在选项卡中管理不同视图),那么是否应该有一个庞大的onClick方法来处理来自任何可单击视图的所有单击,根据哪个视图是活动的处理输入?还是我应该通过程序注册并取消所有听众的注册?
  4. 对于单个活动,任何单击侦听器或广播接收器都不会一直运行,即使没有必要,也会消耗资源吗?
  5. 使用单个活动,back按钮将从其功能的任意点退出整个应用程序。如果我使用的是视图,难道我不需要始终覆盖onBackPressed()并仔细管理应用程序的行为,迫使它“像安卓应用程序一样”吗?
  6. 我是不是想错了?可能我无意中尝试使用视图重新创建ActivityGroup和TabActivity功能,而此时我应该采用完全不同的设计方法来使用选项卡和视图。

当谷歌的人说我们不应该再用活动作为标签时,马克·墨菲先生非常赞同,我倾向于相信。我只是还没能研究出一种不用手工重新创建很多活动功能的切换方式(这可能包括各种肮脏的黑客)。

预先感谢任何愿意处理这样一个模糊和被改写的话题的人。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-01 21:28:41

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

不要忘记,使用兼容性库将片段支持带回到1.6。

这里是谷歌推荐的关于在TabHost中使用片段的简单教程。

票数 2
EN

Stack Overflow用户

发布于 2012-02-01 21:33:33

大约3)将你的应用程序分割成不同的活动,因为你有应用的不同部分。今天,我甚至会选择更容易组合成不同布局的Fragements,例如,为手机和平板电脑制作应用程序。大多数情况下,您只需在相应的xml布局定义文件中设置onClick侦听器,如下所示:

代码语言:javascript
复制
<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属性指向实现处理程序的方法。你不需要注册任何东西。

我选择的不是Tabs,而是ViewPager,它使imo更自然地通过左右滑动交换视图(例如,G+应用程序或市场应用程序)。

票数 1
EN

Stack Overflow用户

发布于 2012-02-03 19:30:54

作为对我自己问题的最后回答:

在选项卡中使用片段确实解决了上述所有问题。

因此,我没有使用定义包含其他活动的选项卡的活动,而是有一个大型FragmentActivity来设置和切换各个片段的视图。在XML中为每个选项卡视图定义的单击方法属于FragmentActivity,我选择让每个onClick调用适当片段中的相应方法(必要时传递上下文),以便以编程方式操作每个视图的代码可以保留在适当的类中。

这是为使用兼容性包的手机,而不是平板电脑或蜂窝,所以我不能代表那些不幸。

这个解决方案似乎对我很管用。我建议任何看过同样问题的人去看看:

博客文章:http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/

片段上的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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9103528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档