碎片中的碎片我想知道这是否是AndroidAPI中的一个bug:我有这样的安排:┌----┬---------┐| | || 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。最初的片段还没有被销毁(?)在添加新的之前(在我看来,这意味着它还没有取代).有人能告诉我这是否可能吗这个答案暗示它不是),还是它是一个bug?
3 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
destroyview
@Override public void onDestroyView() { try{ FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); transaction.remove(nestedFragment); transaction.commit(); }catch(Exception e){ } super.onDestroyView(); }
- 3 回答
- 0 关注
- 314 浏览
添加回答
举报
0/150
提交
取消