Android 删除后子片段不为空
Android child fragment not null after removing
我正在尝试 运行 一些基于子片段是否存在的操作。这是我的代码:
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));
}
问题是我的聊天片段在删除后不为空。这是预期的行为吗?有没有办法完全"remove"到片段为空的地方?
FragmentTransaction#commit
计划删除片段,因此它是异步完成的。 FragmentTransaction#commitNow
同步删除。
FragmentTransaction.commitNow
用于 api 24 或更多,如果您的最小值 api 低于您可以在 commit() 之后使用 popBackStack()。
fragmentTransaction.remove(fragmentA);
fragmentTransaction.commit();
fragmentManager.popBackStack();
我正在尝试 运行 一些基于子片段是否存在的操作。这是我的代码:
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));
}
问题是我的聊天片段在删除后不为空。这是预期的行为吗?有没有办法完全"remove"到片段为空的地方?
FragmentTransaction#commit
计划删除片段,因此它是异步完成的。 FragmentTransaction#commitNow
同步删除。
FragmentTransaction.commitNow
用于 api 24 或更多,如果您的最小值 api 低于您可以在 commit() 之后使用 popBackStack()。
fragmentTransaction.remove(fragmentA);
fragmentTransaction.commit();
fragmentManager.popBackStack();