web-dev-qa-db-ja.com

IllegalStateException-フラグメントサポートライブラリ

Activity onStartメソッドの次の例外を除いて、一部のユーザーデバイスでアプリが継続的にクラッシュするという深刻な問題があります。

Caused by: Java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at Android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.Java:1299)
at Android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.Java:1310)
at Android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.Java:541)
at Android.support.v4.app.BackStackRecord.commit(BackStackRecord.Java:525)
at Android.support.v4.app.DialogFragment.show(DialogFragment.Java:123) 

このエラーをエミュレータでローカルに再現できません。私はstackoverflowでこの問題に関するいくつかの質問を見つけました: ここここ

私は提案された解決策を試しました。つまり、フラグメントでもアクティビティでも、onSaveInstanceで空のバンドルを許可しません。

しかし、問題は残っています。これは私が今までに受け取った唯一のクラッシュレポートであり、私はそれを継続的に受け取ります。

誰かが実用的な解決策を持っていますか?

19
phlebas

私はこの問題を解決しました

  • サポートライブラリをリビジョン10にアップグレードする
  • ここに投稿された回避策の使用: http://code.google.com/p/Android/issues/detail?id=23096 つまり、onResumeFragmentsに非UIフラグメントを追加し、リスナーコールバックでさらにトランザクションを呼び出します。 。

コードについては、ここで私の答えを確認してください: "onSaveInstanceStateの後にこのアクションを実行できません"-アクティビティのonResumeメソッドからこの例外が発生するのはなぜですか?

これまでのところ、IllegalStateExceptionは発生していません。

8
phlebas

この回避策 を使用してこれを解決しました。つまり、アクティビティのメソッドonPostResume()関数にコードを配置します。

4
PearsonArtPhoto