我正在学习片段,但我无法理解为什么片段需要容器的重要性。
我理解片段工作的方式如下:
FragmentActivity setContentview指的是一个xml文件 定义片段的位置。
FragmentActivity创建片段的实例
然后将片段分配给容器。
然后FragmentManager显示它们。
然后,实际的Fragment类会使布局膨胀,而这就是这种布局 包含所有应用程序UI组件。
(如果我在这里错过了什么,请纠正我,因为我现在只是在学习。)
那么为什么我们甚至需要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。 这不是更新的那个。
你知道为什么我有这个问题吗?这在教程中没有解释。
答案 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文件)吗?
是的,他们可以,你可以在同一个容器中用另一个片段替换。