Android片段中容器的用途

时间:2013-02-05 18:37:46

标签: android android-fragments containers fragment

我正在学习片段,但我无法理解为什么片段需要容器的重要性。

我理解片段工作的方式如下:

  1. FragmentActivity setContentview指的是一个xml文件 定义片段的位置。

  2. FragmentActivity创建片段的实例

  3. 然后将片段分配给容器。

  4. 然后FragmentManager显示它们。

  5. 然后,实际的Fragment类会使布局膨胀,而这就是这种布局 包含所有应用程序UI组件。

  6. (如果我在这里错过了什么,请纠正我,因为我现在只是在学习。)

    那么为什么我们甚至需要Container的目的,因为在我看到的所有例子中它只是一个空白的相对布局xml文档。

    不同的片段可以共享同一个Container(因为它只是一个RelativeLayout xml文件)吗?

    所以在google http://developer.android.com/training/basics/fragments/creating.html

    提供的示例中

    他们有一个ListFragment,当通过使用CallBack接口选择项目时,我们最终会回到这行代码:

    // Replace whatever is in the fragment_container view with this fragment,
    // and add the transaction to the back stack so the user can navigate back
    transaction.replace(R.id.fragment_container, newFragment);
    

    我的另一个问题是:

    1)为什么这行代码不能用文章片段替换ListFragment(左侧片段)。从初始化开始,我们看到:

    getSupportFragmentManager().beginTransaction()
                        .add(R.id.fragment_container, firstFragment).commit();
    

    相反...... ListFragment保留在左侧,右侧片段更新。 但容器fragment_container属于firstFragment,这是ListFragment。 这不是更新的那个。

    你知道为什么我有这个问题吗?这在教程中没有解释。

1 个答案:

答案 0 :(得分:3)

此处:http://marakana.com/s/post/1250/android_fragments_tutorial

在这里:http://developer.android.com/guide/components/fragments.html

阅读本文,一切都将清楚:)

Fragment是Activity的一部分,只能存在于Activity中。因此,您需要一种可以处理片段的特殊类型的活动 - 它是FragmentActivity。

FragmentActivity without Fragments几乎就像一个普通的Activity。但它有一个FragmentManager来管理(添加,删除,替换)片段。当您想要将片段添加到FragmetnActivity时,您应该指定它应该放置的位置(因为片段不需要是全屏的,就像GooglePlay一样 - 有多个小片段)。所以这就是你需要一个容器的原因。

  

不同的片段可以共享同一个Container(因为它只是一个RelativeLayout xml文件)吗?

是的,他们可以,你可以在同一个容器中用另一个片段替换。