我有一个活动,它在ViewFlipper中托管3个片段。这三个片段中的每一个都存在它们自己的片段。我使用ViewFlipper就像一个制表符控件,它允许我在应用程序中的各种“视图”之间进行非常简单的切换。到目前为止,一切正常。
当用户在视图中时,存在导航流。我用:
final FragmentTransaction txn = getChildFragmentManager()
.beginTransaction();
txn.replace(R.id.view1_silo_container,
new View1Fragment());
txn.addToBackStack(null);
txn.commit();
在此视图中移动。因此,当用户导航时,我调用上面代码的一些变体来用新的代码替换当前片段。同样,到目前为止这一切都很好。
问题在于,当我到达底部片段(A> B> C)然后我点击后退按钮从(C> B)开始时,我得到重复的ID错误。问题是“B”片段本身有一个嵌套在其中的片段。只要我避免给这个片段一个id,就没有问题。但是,如果我给这个片段一个id,那么我得到“Duplicate id,tag null,或者parent id 0x0 with another fragment”。
我不明白为什么这是一个问题,我还没有办法解决它。我完全错了吗?我缺少一些小件吗?
答案 0 :(得分:1)
答案是:
注意:当布局包含< fragment>时,您无法将布局膨胀为片段。只有动态添加到片段时才支持嵌套片段。
可以在Android 4.2 APIs文档中找到有关新嵌套片段功能的信息。
删除<片段>后从布局和使用getChildFragmentManager()在onCreateView中“手动”插入片段,它工作正常。没有更多重复的错误。