android - 在片段onDetach发生什么

问题描述:

我在底部导航中使用嵌套片段。在第一次,所有的片段被加载,一切都很好,但当我改变片段,空异常被解雇,我看到getParentFragment()返回null,因为onDetach被调用我需要知道,在儿童片段中发生了什么func?孩子片段从父母分离,我必须再次设置它?如何避免这种分离?android - 在片段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

请写出您的片段更改方法 –

detach方法从UI中删除片段,但其状态由Fragment Manager维护。这意味着您可以通过调用attach方法重新使用此片段,并使用修改后的ViewHierarchy

从Android 4.2开始支持嵌套片段。

你可以使用getChildFragmentManager()...

拆离:

拆离从UI给定的片段。这与将 置于反向堆栈时的状态相同:将该片段从UI中删除, 但是其状态仍由 管理器主动管理。进入这种状态时,它的视图层次被破坏。