9

我正在学习 Fragments,但我无法理解为什么 Fragments 需要一个 Container 背后的意义。

我理解 Fragments 工作的方式如下:

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

  2. FragmentActivity 创建片段的实例

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

  4. FragmentManager 然后显示它们。

  5. 实际的 Fragment 类然后膨胀一个布局,正是这个布局包含了所有的应用程序 UI 组件。

(如果我在这里遗漏了什么,请纠正我,因为我现在只是在学习)。

那么为什么容器的目的是我们为什么需要,因为在我看到的所有示例中,它只是一个空白的相对布局 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(左侧Fragment)。自从它被初始化以来,我们看到:

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

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

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

4

1 回答 1

3

在这里: http: //marakana.com/s/post/1250/android_fragments_tutorial

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

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

Fragment 是 Activity 的一部分,只能存在于 Activity 内部。所以你需要一种可以处理片段的特殊类型的活动——它是FragmentActivity。

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

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

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

于 2013-02-05T20:41:24.443 回答