java.lang.IllegalStateException:已经调用了commit
发布时间:2020-12-15 04:28:29 所属栏目:Java 来源:网络整理
导读:我试过以下代码, try { final Activity activity = ctx; FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); android.app.Fragment prev = activity.getFragmentManager().findFragmentByTag("dialog"); if (prev != null) { ft.r
我试过以下代码,
try { final Activity activity = ctx; FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); android.app.Fragment prev = activity.getFragmentManager().findFragmentByTag("dialog"); if (prev != null) { ft.remove(prev); } DialogServiceFailed newFragment = DialogServiceFailed.newInstance(pageName,onServiceFailed); newFragment.show(ft,"dialog"); ft.addToBackStack(null); ft.commitAllowingStateLoss(); } catch (ClassCastException e) { Log.d("Log","Can't get the fragment manager with this"); } 但我收到以下异常,我的应用程序崩溃了. java.lang.IllegalStateException: commit already called at android.app.BackStackRecord.commitInternal(BackStackRecord.java:582) at android.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:578) at com.brightspot.extrain5psim.model.APIRequestHandler.loadServiceFailedDialog(APIRequestHandler.java:99) at com.brightspot.extrain5psim.view.fragments.LoginFragment.setOnAsyncTaskCompleted(LoginFragment.java:201) at com.brightspot.extrain5psim.model.APIRequestHandler.onPostExecute(APIRequestHandler.java:80) at com.brightspot.extrain5psim.model.APIRequestHandler.onPostExecute(APIRequestHandler.java:17) at android.os.AsyncTask.finish(AsyncTask.java:631) at android.os.AsyncTask.access$600(AsyncTask.java:177) at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5317) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(Native Method) 解决方法newFragment.show(ft,"dialog") show calls内部提交.所以你可能想要摆脱 ft.commitAllowingStateLoss(); 或者你可以摆脱 newFragment.show(ft,"dialog"); 添加电话 ft.add(newFragment,"dialog"); ft.commitAllowingStateLoss(); 编辑 这就是DialogFragment的show()的样子 public int show(FragmentTransaction transaction,String tag) { mDismissed = false; mShownByMe = true; transaction.add(this,tag); mViewDestroyed = false; mBackStackId = transaction.commit(); return mBackStackId; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |