片段中的片段

2024-01-28

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

我有这样的设置:

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

此功能在手机上运行得非常好(其中 1、2 和 3 是ActivityFragments).

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

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

Where R.id.leftPane and R.id.rightPane are <fragment>s 采用水平线性布局。

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

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 所致。在添加新片段之前,初始片段尚未被销毁(?)(在我看来,这意味着它尚未被销毁)replaced).

有人可以告诉我这是否可能(这个答案 https://stackoverflow.com/questions/5268361/fragments-in-action-bar-tab-fragments/5280000#5280000建议不是)还是一个错误?


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

Update:嵌套片段受到支持从 Android 4.2(和 Android 支持库 rev 11)开始:http://developer.android.com/about/versions/android-4.2.html#NestedFragments http://developer.android.com/about/versions/android-4.2.html#NestedFragments

NOTE(按照这个文档 http://developer.android.com/about/versions/android-4.2.html#NestedFragments): "注意:当布局包含<fragment>。仅当动态添加到片段时才支持嵌套片段。"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

片段中的片段 的相关文章

随机推荐