2017-04-06 58 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