使用fragment,出现错误“commit already called”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011386173/article/details/84238579

错误信息:

10-28 21:33:40.036 20313 20313 E AndroidRuntime: FATAL EXCEPTION: main
10-28 21:33:40.036 20313 20313 E AndroidRuntime: Process: com.android.settings, PID: 20313
10-28 21:33:40.036 20313 20313 E AndroidRuntime: java.lang.IllegalStateException: commit already called
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.app.BackStackRecord.commitInternal(BackStackRecord.java:673)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.app.BackStackRecord.commit(BackStackRecord.java:646)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at com.maureen.mainui.MainActivity.onClick(MainActivity.java:155)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.view.View.performClick(View.java:6603)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.view.View.performClickInternal(View.java:6576)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.view.View.access$3100(View.java:780)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.view.View$PerformClick.run(View.java:26069)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:873)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:193)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6702)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
10-28 21:33:40.036 20313 20313 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911)

在BackStackRecord.java中:

仅该函数中将mCommited变量赋值为true。所以APP调用一次commit后,mCommited = true,如果用该对象再次调用commit就会抛出异常。

解决方案

重新使用一个对象进行replace和commit。

猜你喜欢

转载自blog.csdn.net/u011386173/article/details/84238579