【问题标题】:Purpose of Container in Fragments for AndroidAndroid Fragments 中容器的用途
【发布时间】:2013-02-05 18:37:45
【问题描述】:

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

我对 Fragments 工作的理解如下:

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

  2. FragmentActivity 创建片段的实例

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

  4. FragmentManager 然后显示它们。

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

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

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

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

所以在googlehttp://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。 这不是更新的。

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

【问题讨论】:

    标签: android android-fragments containers fragment


    【解决方案1】:

    这里: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 一样 - 有多个小片段)。所以这就是你需要一个容器的原因。

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

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

    【讨论】:

    • 声明“所以你需要一种可以处理片段的特殊类型的活动——它是FragmentActivity。”对于旧版本的 android 和使用支持库时也是如此。在当前版本(例如 Android API 19)中,默认的 Activity 已经具有片段功能。例如。 getFragmentManager() 函数:developer.android.com/reference/android/app/…
    • 如何将包含多个片段的容器中的特定片段替换为新片段?
    • 替换fragment和不同的fragment共享同一个容器是不一样的。如果一个片段被另一个片段替换,则两个片段不能共享一个容器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    相关资源
    最近更新 更多