2017-06-02 56 views
0

我正在使用SupportMapFragment,并在提交时崩溃且出现非法状态异常。 这里的代码如下:setMap上的onSaveInstanceState后无法执行此操作

mSupportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.branch_mp_view); 
     if (mSupportMapFragment == null) { 
      FragmentManager fragmentManager = getChildFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      mSupportMapFragment = SupportMapFragment.newInstance(); 
      fragmentTransaction.replace(R.id.branch_mp_view, mSupportMapFragment).commit(); 
     } 

     if (mSupportMapFragment != null) { 
      mSupportMapFragment.getMapAsync(this); 
     } 

日志:

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 
     at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1538) 
     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1556) 
     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:696) 
     at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:662) 
     at com.android.myapp.ui.branch_master.MyFragment.setMap(MyFragment.java:1346) 
     at com.android.myapp.ui.branch_master.MyFragment.handleSuccessBranchDetail(MyFragment.java:3267) 
     at com.android.myapp.ui.branch_master.MyFragment$1.onResponse$230aa0b4(MyFragment.java:200) 
     at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68) 
     at android.os.Handler.handleCallback(Handler.java:815) 
     at android.os.Handler.dispatchMessage(Handler.java:104) 
     at android.os.Looper.loop(Looper.java:194) 
     at android.app.ActivityThread.main(ActivityThread.java:5637) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754) 

请帮助,我无法重现它,但我现在在crashlytics看到这个崩溃在一段时间出现一次。

+0

[java.lang.IllegalStateException:onSaveInstanceState后无法执行此操作]的可能重复(https://stackoverflow.com/questions/14177781/java-lang-illegalstateexception-can-not-perform-this-action-后onsaveinstanc) – azizbekian

回答

0

看起来你正试图在apicall完成后显示mapFragment。与此同时,用户可能已经关闭了应用程序,或者去了另一个屏幕。当发生这种情况时,活动或片段会暂停。暂停后不可能再替换片段。你可以通过检查你的ap是否还在前台来防止这种情况发生。例如,当调用onResume时,可以将名为foreground的布尔值设置为true,并在调用onPause时将其设置为false。您现在可以使用此变量来查看您的片段是否可以显示。

相关问题