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

Android-如何制作具有视图的复杂选项卡式应用程序,android,architecture,tabs,views,Android,Architecture,Tabs,Views,关于堆栈溢出的第一个问题,如果格式不正确,请道歉 我正在开发一个相对复杂的选项卡式应用程序,在遇到不推荐使用ActivityGroup和TabActivity的信息之前,我已经建立了基础知识,首选的模型是使用视图 我在使用视图时没有遇到任何问题,这是一个关于体系结构而不是语法的问题(这就是为什么我没有发布任何代码)。具体来说,我应该如何重新构建应用程序,以使用视图而不是意图启动的活动 该应用程序有五个标签;两个有一个布局,没有问题。其他三个选项卡正在运行一个包含2-5个不同活动的Activity

关于堆栈溢出的第一个问题,如果格式不正确,请道歉

我正在开发一个相对复杂的选项卡式应用程序,在遇到不推荐使用ActivityGroup和TabActivity的信息之前,我已经建立了基础知识,首选的模型是使用视图

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

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

主要问题是只使用视图,根本不使用选项卡Activity/Activity group。我所做的绝大多数研究都是关于是否使用活动或视图,或者关于特定语法的讨论。对于如何在整个应用程序中真正转换到视图,我还没有一个清晰的想法

  • 如果我这样做的话,整个应用程序现在不是在一个活动中运行吗?一个托管选项卡式布局的活动

  • 如果(1)为真,如何管理?尽管ActivityGroup已被弃用,但所有Android文档似乎都表示,对于功能的不同方面,最好使用不同的活动,这是有道理的。安卓开发团队是否仅仅决定了堆栈和设备的成本使得TabActivity实现无效

  • 如果应用程序在单个活动中运行,该活动管理每个选项卡的不同视图(必要时在一个选项卡中管理不同视图),我是否应该有一个单一的onClick方法来处理来自任何可单击视图的所有单击,并根据哪个视图处于活动状态来处理输入?或者我应该按程序注册和取消注册我的所有听众

  • 对于单个活动,任何单击侦听器或广播接收器不会一直运行,即使在不必要时也会消耗资源吗

  • 对于单个活动,后退按钮将从其功能的任何点退出整个应用程序。如果我使用的是视图,难道我不需要始终覆盖onBackPressed(),并仔细管理应用程序的行为,以强制其“像Android应用程序一样”吗

  • 我是不是完全错了?可能是我无意中尝试使用视图重新创建ActivityGroup和TabActivity功能,而我本应采用完全不同的设计方法来使用选项卡和视图

  • 当谷歌的人说我们不应该再把活动作为标签使用时,马克·墨菲先生也非常同意,我倾向于相信。我只是无法研究一种切换方式,而不借助手工重新创建大量活动功能(可能包括各种肮脏的黑客行为)

    提前感谢任何愿意处理这样一个模糊且被覆盖的主题的人。

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

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

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

    大约3)根据应用程序的不同部分,将应用程序拆分为多个活动。今天,当你为手机和平板电脑制作应用程序时,我甚至会选择更容易组合成不同布局的片段。 大多数情况下,您只需在相应的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+应用程序或市场应用程序)

    作为我自己问题的最终答案:

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

    因此,与定义包含其他活动的选项卡的活动不同,我有一个大型FragmentActivity,用于设置和切换各种片段的视图。XML中为每个选项卡视图定义的click方法属于FragmentActivity,我选择让每个onClick调用相应片段中的相应方法(如果需要,传递上下文),以便以编程方式操作每个视图的代码可以保留在相应的类中

    这是一款使用兼容软件包的手机,而不是平板电脑或蜂窝电脑,所以我不能为那些不幸的人说话

    这个解决方案似乎对我很有效。我建议任何关注同一问题的人查看:

    Suedocoder博客帖子:

    关于碎片的Android文档:

    API演示“片段选项卡”

    这是一个非常好的问题。。。欢迎来到Stack。我想我把这一点从最初的问题中忽略了——我的大部分点击处理都是通过布局xml中通过android:onClick声明的方法完成的。在这种情况下,侦听器是否仅在使用setContent()或setContentView()调用相关文件时才处于活动状态,这样我就不必担心其他问题了?是的,并且也可以对多个UI元素使用一个方法,您会得到