Android FragmentManager在清除片段时调用onCreateView
我有以下碎片操纵方法:Android FragmentManager在清除片段时调用onCreateView,android,android-fragments,Android,Android Fragments,我有以下碎片操纵方法: public void replaceFragment(Fragment fragment) { FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.main_frame, fragment); fragmentTransaction.commit(); fragmentM
public void replaceFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.main_frame, fragment);
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
}
public void addFragment(Fragment fragment, boolean addToBackStack) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.main_frame, fragment);
if (addToBackStack) {
fragmentTransaction.addToBackStack(fragment.getClass().getName());
}
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
}
public void clearFragments() {
if (fragmentManager.getBackStackEntryCount() > 0) {
FragmentManager.BackStackEntry first = fragmentManager.getBackStackEntryAt(0);
fragmentManager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
情景:
当创建活动时,我从片段A开始addFragment(新的A,false)强>
然后我添加片段B.replaceFragment(新的B)强>
我添加另一个片段C.addFragment(新的C)强>
在C片段中,我想将应用程序重置为片段。我调用clearFragments();addFragment(新的A,false)强>
问题是,按下C片段上的按钮清除片段并添加片段后,会调用B片段onCreateView
。我没有看到片段,但它启动了后台线程,使我的应用程序崩溃。我需要清除所有片段,而不调用它们的onCreateView()
方法
这是预期的行为,还是我做错了什么?实际上,在这种情况下,您将始终返回片段B 逐步:
addFragment(新的A,true)代码>没有帮助。同样的情况也会发生。在清除片段之后,我返回片段B。哦,我忘了提到replaceFragment也应该有addToBackStack调用。没有它,您的后堆栈链就不会满。你能把它加起来再检查一下吗?