android - Android Fragments 中容器的用途

标签 android android-fragments containers fragment

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

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

  1. FragmentActivity setContentview 引用一个 xml 文件,它 定义 fragment 的位置。

  2. FragmentActivity 创建 fragment 的实例

  3. 然后将 fragment 分配给容器。

  4. 然后 FragmentManager 显示它们。

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

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

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

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

所以在google提供的例子中http://developer.android.com/training/basics/fragments/creating.html

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

// 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)为什么这行代码没有用文章 fragment 替换ListFragment(左侧 fragment )。从初始化开始,我们看到:

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

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

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

最佳答案

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

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

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

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

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

Can different fragments share the same Container (since its just a RelativeLayout xml file)?

是的,他们可以,您可以在同一个容器中用另一个 fragment 替换一个 fragment 。

关于android - Android Fragments 中容器的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714489/

相关文章:

android - 收到新的FCM消息(前景和背景)时,Android应用程序崩溃

android - 如何在android中的自定义 ListView 上设置点击监听器

android - 如何在Android应用程序中一起播放视频和音频

android - 如何从fragment中隐藏Recyclerview的行项目

android - findFragmentByTag() 在使用 replace() 方法执行 FragmentTransaction 后返回 null

android - 旋转后 MapFragment 变得无响应

使用控制反转容器的 Java 惰性实例

kubernetes - Helm可以一次运行安装多组件应用程序吗?

docker - nginx无法将请求转发到在其他容器中运行的服务

java - 我可以使用 volley 进行同步请求吗?