我在底部导航中使用嵌套片段。在第一次,所有片段都被加载,一切都很好但是当我更改片段时,null异常被触发,我看到getParentFragment()
返回null,因为onDetach
被调用我需要知道在子片段中那个功能会发生什么?子片段从其父级分离,我必须再次设置它?如何避免这种分离?
public void switchFrag() {
Fragment displayedFragment;
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (isListFragmentDisplayed) {
displayedFragment = mapFragment;
transaction.replace(R.id.fragment_contaner, displayedFragment, "map").commit();
} else {
displayedFragment = listFragment;
transaction.replace(R.id.fragment_contaner, displayedFragment, "list").commit();
}
isListFragmentDisplayed = !isListFragmentDisplayed;
}
答案 0 :(得分:0)
detach方法从UI中删除片段,但其状态由片段管理器维护。这意味着您可以通过使用修改后的ViewHierarchy
调用attach方法来重用此片段答案 1 :(得分:0)
自Android 4.2起支持嵌套片段。
你可以使用getChildFragmentManager()...
分离:
从UI中分离给定的片段。这与当时的状态相同 它放在后台堆栈上:片段从UI中删除, 然而它的状态仍然被片段主动管理 经理。进入此状态时,其视图层次结构将被销毁。