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

java.lang.IllegalStateException求指導 財富值46?

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

java.lang.IllegalStateException: Can not perform this action after onSaveI<愛尬聊_百科全書>nstanceState 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(InputMethodManager.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-09-06 16:26

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


0258abc_ 2022-09-06 16:35

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


fgh54574 2022-09-06 16:36

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


天煞2104 2022-09-06 16:37

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


是木木姐姐啊 2022-09-06 16:39

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


139****8268 2022-09-06 16:41

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


編輯 舉報 2023-04-24 16:28

0個評論

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