android - 片段onDetach中发生了什么

时间:2017-09-27 10:18:06

标签: android android-fragments fragment

我在底部导航中使用嵌套片段。在第一次,所有片段都被加载,一切都很好但是当我更改片段时,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;
    }

2 个答案:

答案 0 :(得分:0)

detach方法从UI中删除片段,但其状态由片段管理器维护。这意味着您可以通过使用修改后的ViewHierarchy

调用attach方法来重用此片段

答案 1 :(得分:0)

自Android 4.2起支持嵌套片段。

你可以使用getChildFragmentManager()...

分离:

  

从UI中分离给定的片段。这与当时的状态相同   它放在后台堆栈上:片段从UI中删除,   然而它的状态仍然被片段主动管理   经理。进入此状态时,其视图层次结构将被销毁。