1

私のアプリは最小バージョンのAPI 15isDestroyed()をサポートしています。メソッドは最小API 17をサポートしています。

したがって、このメソッドを使用すると、API 17 以下でそのようなメソッド エラーは発生しません。

ユーザーがホームボタンを押して、他のアプリを使用します。開いた後、アプリのアクティビティ インスタンスが破棄され、このアクティビティ インスタンスを使用すると、次のエラーが発生します。

Fatal Exception: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
       at android.support.v4.app.FragmentManagerImpl.checkStateLoss(Unknown Source)
       at android.support.v4.app.FragmentManagerImpl.enqueueAction(Unknown Source)
       at android.support.v4.app.BackStackRecord.commitInternal(Unknown Source)
       at android.support.v4.app.BackStackRecord.commit(Unknown Source)

私に何ができる?

4

2 に答える 2

3

おそらく onSaveInstanteState の後で、または Android が状態を復元できることを保証できない他の場所からフラグメントをコミットしています。

代わりに を使用できますがcommitAllowingStateLoss()、使用しないでisDestroyed()ください。nullをチェックgetActivity()して、null でない場合にのみコミットすることもできると思います。フラグメントがデタッチされた場合は null になります。

[編集]

このメソッドを提供するサポート ライブラリを使用することもできます。

http://developer.android.com/reference/android/support/v4/app/FragmentManager.html#isDestroyed()

(奇妙ですが、あなたの例外から、サポートライブラリを使用しているようです)

于 2015-12-29T09:45:53.257 に答える