最佳答案
我想知道这是否真的是 Android API 中的一个 bug:
我有一个这样的设置:
┌----┬---------┐
| | |
| 1 | 2 |
| |┌-------┐|
| || ||
| || 3 ||
└----┴┴-------┴┘
这个功能在手机上运行得非常好(其中1、2和3是 ActivityFragment
)。
但是,当我使用这个代码时:
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>
。
我的理解是,上面的代码删除了驻留的片段,然后用一个新的片段替换它。太棒了... ... 显然这不会发生,因为当这段代码第二次运行时,会出现以下异常:
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。最初的碎片还没有被销毁(?)在添加新的之前(在我看来,这意味着它不是 被取代了)。
有人能告诉我这是否可能(这个答案表示不可能) ,或者这是一个错误?