android - fragment 中的 fragment

标签 android android-fragments android-nested-fragment

我想知道这是否真的是 Android API 中的一个错误:

我有这样的设置:

┌----┬---------┐
|    |         |
|  1 |    2    |
|    |┌-------┐|
|    ||       ||
|    ||   3   ||
└----┴┴-------┴┘
  1. 是在右侧 Pane 中加载 fragment #2(搜索屏幕)的菜单。
  2. 是一个搜索屏幕,其中包含 fragment #3,它是一个结果列表。
  3. 结果列表在多个地方使用(包括作为一个功能强大的高级 fragment 本身)。

此功能在手机上运行良好(其中 1 & 2 和 3 为 ActivityFragment s)。

但是,当我使用这段代码时:

    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();       
    Fragment frag = new FragmentNumber2();
    if(toLoad != null) frag.setArguments(toLoad);
    transaction.replace(R.id.rightPane, frag);      
    transaction.commit();

在哪里 R.id.leftPaneR.id.rightPane<fragment> s 在水平线性布局中。

据我了解,上面的代码删除了常驻的 fragment ,然后用新的 fragment 替换它。太棒了...显然这不是发生的情况,因为当此代码第二次运行时,您会收到以下异常:

07-27 15:22:55.940: ERROR/AndroidRuntime(8105): Caused by: java.lang.IllegalArgumentException: Binary XML file line #57: Duplicate id 0x7f080024, tag null, or parent id 0x0 with another fragment for FragmentNumber3

这是因为 FragmentNumber3 的容器已复制,并且不再具有唯一 ID。在添加新的 Fragment 之前,最初的 Fragment 没有被销毁 (?)(在我看来,这意味着它没有被 替换)。

谁能告诉我这是否可能(this answer 表示不可能)还是一个错误?

最佳答案

目前不支持嵌套 fragment 。尝试将 fragment 放入另一个 fragment 的 UI 中会导致未定义且可能会损坏的行为。

Update: Nested fragments are supported as of Android 4.2 (and Android Support Library rev 11) : http://developer.android.com/about/versions/android-4.2.html#NestedFragments

注意(根据 this docs ):“注意:当布局包含 <fragment> 时,您不能将布局扩展为 fragment 。嵌套 fragment 仅在添加到动态的 fragment 。"

关于android - fragment 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6847460/

相关文章:

android - 将三个json文件追加到一个json文件中

java - 为什么我收到错误? : parameter t has incompatible upper bounds: Preference and Preference

Android 底部导航 View 自定义

android - ViewPager 的 Fragments 消失了

Android 动画嵌套 fragment

android - 添加核心 ktx 后 Gradle 构建失败

android - viewholder 中一个按钮的转换会影响不同行的多个按钮

java - Android - 动态创建 View 无法按预期工作

ViewPager 内部的 Android ViewPager

android - 嵌套 fragment 通信