久久精品国产精品青草色艺_www.一区_国内精品免费久久久久妲己_免费的性爱视频

java.lang.IllegalStateException求指導?

測試同學跑Monkey跑出了這個異常導致的crash,對應的Android版本是Android6.0。
補充:出問題的Activity是使用了ViewPager無限循環展示圖片,內容是ImageView,不是Fragment。
但是我的應用中沒有用到任何Fragment,任何commit方法。詳細Log如下:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1438) at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:581) at android.app.Activity.onBackPressed(Activity.java:2537) at android.app.Activity.onKeyUp(Activity.java:2511) at android.view.KeyEvent.dispatch(KeyEvent.java:2695) at android.app.Activity.dispatchKeyEvent(Activity.java:2764) at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2384) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4687) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4643) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4155) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4208) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4174) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4320) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4182) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4377) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4155) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4208) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4174) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4182) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4155) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4208) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4174) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4353) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4523) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2336) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMet<愛尬聊_創建詞條>hodManager.java:1940) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1931) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2313) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:328) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:5811) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:734)

在StackOverFlow上搜到了類似的問題:http://stackoverflow.com/ques...

StackOverFlow上說要重寫onSaveInstaceState方法,去掉super調用,但是我不清楚這樣做是否存在負作用,所以希望有經驗的人指導一下如何解決這個問題。


梅長酥 2022-06-24 06:53

方案二(參考StackOverFlow上的做法)——重寫onSaveInstanceState方法:


一21 2022-06-24 06:57

問題原因:在使用了support-v4包中ViewPager的Activity,由于Android系統歷史問題,會導致onSaveInstaceState方法調用時機出現不確定性。而onSaveInstaceState方法中會調用FragmentMananger的saveAllState方法。如果這個調用時機出現在onBackPressed方法之前,在onBackPressed方法中會判斷是否已經存在saveAllState的行為,如果存在就拋出IllegalStateException。


realrival#p#web 2022-06-24 07:00

我已經找到方法規避該問題,先自問自答一下。


M61****992 2022-06-24 07:05

兩種方法各有弊端,建議更清楚該問題的同學來回答一下這個問題,我拋磚引玉了。


shawnxx#p#ejinj 2022-06-24 07:08

解決方法:既然知道方法的原因,當然也就有了對應的解決方案。


梅長酥 2022-06-24 07:18

方案1(也是我采用的方式)——重寫onBackPressed方法:


編輯 舉報 2023-04-15 17:23

0個評論

暫無評論...
驗證碼 換一張
相關內容