我有一种方法可以删除所有后置堆栈
public void removeAllInBackStack(FragmentManager fm) {
int len = fm.getBackStackEntryCount();
for (int i = 0; i < len; i++) {
fm.popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}
但是当我运行它时。
len的值始终> 0,但是popBackStack具有java.lang.NullPointerException。
我尝试了宽度popBackStack()和popBackStack(id,FragmentManager.POP_BACK_STACK_INCLUSIVE)。
这是logcat:
android.app.BackStackRecord.popFromBackStack(BackStackRecord.java:676)
android.app.FragmentManagerImpl.popBackStackState(FragmentManager.java:1496)
android.app.FragmentManagerImpl$3.run(FragmentManager.java:464)
android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1401)
android.app.Activity.performResume(Activity.java:5076)
android.app.ActivityThread.performResumeActivity(ActivityThread.java:2566)
android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2604)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1238)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.app.ActivityThread.main(ActivityThread.java:4747)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
dalvik.system.NativeStart.main(Native Method)
最佳答案
我必须在我的应用程序中执行相同的操作,这是我的操作方法:
try {
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
fm.executePendingTransactions();
} catch (Exception e) {
e.printStackTrace();
}
黛安·哈克伯恩(Dianne Hackborn)在这篇文章中解释了执行此操作的正确方法:
https://groups.google.com/forum/#!topic/android-developers/0qXCA9rW7EI
如链接中所述:popBackStack(null,FragmentManager.POP_BACK_STACK_INCLUSIVE);应该弹出整个后排堆栈。
关于android - Android FragmentManager:getBackStackEntryCount()和popBackStack(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19496750/