0

我有一个在 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,那么我会得到“重复的 id、标记 null 或父 id 0x0 与另一个片段”。

我不明白为什么这是一个问题,我还没有找到解决它的方法。我做错了吗?我缺少一些小块吗?

4

1 回答 1

1

答案是:

注意:当布局包含 <fragment> 时,您不能将布局扩展为片段。仅当动态添加到片段时才支持嵌套片段。

这可以在有关新嵌套片段功能的Android 4.2 API文档中找到。

一旦我从布局中删除了 <fragment> 并使用 getChildFragmentManager() 在 onCreateView 中“手动”插入片段,它就可以正常工作了。不再有重复的错误。

于 2013-08-08T13:35:20.103 回答