【发布时间】:2011-10-14 10:00:54
【问题描述】:
我想知道这是否真的是 Android API 中的一个错误:
我有这样的设置:
┌----┬---------┐
| | |
| 1 | 2 |
| |┌-------┐|
| || ||
| || 3 ||
└----┴┴-------┴┘
- 是在右侧窗格中加载片段 #2(搜索屏幕)的菜单。
- 是一个搜索屏幕,其中包含片段#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();
其中R.id.leftPane 和R.id.rightPane 是水平线性布局中的<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。在添加新的 Fragment 之前,最初的 Fragment 没有被销毁 (?)(在我看来,这意味着它没有被 替换)。
有人能告诉我这是否可能(this answer 表示不可能)还是一个错误?
【问题讨论】:
-
@rds 这是一个古老的问题,标记为重复有点毫无意义。
标签: android android-fragments android-nested-fragment