2017-04-06 37 views
0

我試圖根據是否存在子代片段來運行一些操作。這裏是我的代碼:刪除後Android子代片段不爲空

private void addChatFragment() { 
    getChildFragmentManager() 
      .beginTransaction() 
      .add(R.id.chat_container, ChatFragment.newInstance(), 
        ChatFragment.FRAGMENT_TAG).commitAllowingStateLoss(); 
} 

private void removeChatFragment() { 
    ChatFragment f = (ChatFragment)getChildFragmentManager() 
      .findFragmentByTag(ChatFragment.FRAGMENT_TAG); 
    if(f != null) { 
     getChildFragmentManager().beginTransaction().remove(f).commit(); 
    } 

    Log.v("qwer", "is chat fragment null: " + getChildFragmentManager() 
      .findFragmentByTag(ChatFragment.FRAGMENT_TAG)); 

} 

問題是我刪除它後我的聊天片段不爲空。這是預期的行爲?是否有一種方法可以完全「移除」到片段爲空的地方?

回答

1

FragmentTransaction#commit計劃刪除片段,因此它是異步完成的。 FragmentTransaction#commitNow同步進行移除。

+0

很好很酷謝謝,我會在幾分鐘內接受。 – jwBurnside