Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android应用程序中使用活动或片段_Android_Android Activity_Android Fragments - Fatal编程技术网

在Android应用程序中使用活动或片段

在Android应用程序中使用活动或片段,android,android-activity,android-fragments,Android,Android Activity,Android Fragments,我是android新手。我经常使用活动从一个屏幕切换到另一个具有其他功能的屏幕。从主页到流行页面的示例。在那之后,我知道fragment,但我以前从未使用过它。因此,如果我有一个屏幕上有多个选项卡的应用程序,在这里不要使用TabHost。每个标签的功能非常不同,例如:标签主页,标签流行,标签新闻,标签个人资料。。。比如Instagram应用程序。我必须用这个 活动将屏幕切换到另一个屏幕,这意味着:我有家庭活动、流行活动。。。并在发生变化时改变活动。每个活动都有各自的布局 在一个活动中使用片段。我

我是android新手。我经常使用活动从一个屏幕切换到另一个具有其他功能的屏幕。从主页到流行页面的示例。在那之后,我知道fragment,但我以前从未使用过它。因此,如果我有一个屏幕上有多个选项卡的应用程序,在这里不要使用TabHost。每个标签的功能非常不同,例如:标签主页,标签流行,标签新闻,标签个人资料。。。比如Instagram应用程序。我必须用这个

  • 活动将屏幕切换到另一个屏幕,这意味着:我有家庭活动、流行活动。。。并在发生变化时改变活动。每个活动都有各自的布局
  • 在一个活动中使用片段。我们有多个片段,例如HomeFragment,Popular fragment。。。更改屏幕时更换碎片
  • 什么方法更好?
    我想问一下什么时候只用手机屏幕。(小屏幕,不适用于平板电脑)。

    您可以使用任何一种方式。如果决定使用活动解决方案,请创建包含所有选项卡功能的基本活动类。你不想在每一个活动中一遍又一遍地实现这一点

    public class BaseActivity extends Activity {
    
        @Override 
        public void onCreate(...) {
            // Init tabs
        }
    
        // Methods for tab handling
    }
    
    每个活动(流行、个人资料、家庭等)都扩展了BaseActivity

    public class PopularActivity extends BaseActivity {
    
        @Override
        public void onCreate(...) {
            super.onCreate(...);
    
            // Init only the popular activity elements here
        }
    }
    

    通过这种方式,您只需实现一次标签功能,并在每项活动中都能获得它。

    重要的是,要将Android设备视为一个频谱,而不是明确的“手机”与“平板电脑”桶。在许多情况下,您可能希望在
    中型
    大型
    屏幕上显示更多信息。有时,这意味着同时显示两个“活动”

    使用片段只需要很少的开销,但增加了可测量的灵活性,特别是在开发过程的早期考虑时。如果正确使用片段,适应更大的屏幕非常简单。然而,有几个“陷阱”可能会使片段看起来比实际情况更令人畏惧:

    • Fragment
      类必须始终声明为
      public
      (如果是嵌套类,则必须声明为
      静态

    • 在父级
      活动
      (或
      片段活动
      )中,如果
      savedInstanceState==null,则仅添加根
      片段
      。如果您正确地管理了
      片段的状态,那么一切都会为您处理(滚动位置、编辑文本值等)

    • 父级
      活动
      必须通过调用
      onSavedInstanceState
      ,才能使
      片段
      正确恢复其状态

    • setRetainInstance(true)
      只能用于“无头”碎片。这是当您使用一个没有UI的片段,并且没有添加到后台堆栈中时,后台堆栈通常用于执行与生命周期相关的工作

    • XML中声明的片段不能用于
      片段事务
      (反之亦然)


    片段
    视为一个模块化视图,它在重要事件发生时为其
    活动
    提供挂钩(回调)。
    活动
    根据可用空间决定是启动一个新的
    活动
    ,还是显示一个新的
    片段

    我只理解这种方式,但我也认为每个屏幕都有每个活动,所有活动都从BaseActivity扩展而来。所以,我不知道BaseActivity必须初始化什么。请提供一些线索。。。为了更好的理解。谢谢你。