Android 11 のライフサイクルに、誰もが気付いた顕著な変更はありましたか?
私のアプリは Android 11 より前の OS では正常に動作しますが、Pixel 4 では毎回次のエラーでクラッシュします。
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Fragment host has been destroyed
Android 11 で自分のアプリに影響を与えるだけで、他の誰かが気づいたことは何かありますか?
アクティビティとフラグメントに別のファイルを使用しています。
私はTreasureHuntActivity
onCreateを呼び出すものを持っています:
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, TreasureHuntMapFragment.newInstance(), "map-${index}").addToBackStack("map-${index}").commit()
fragmentManager.executePendingTransactions()
それTreasureHuntMapFragment
が呼び出す
val intent = Intent(context, MainUnityActivity::class.java)
activity.startActivityForResult(intent, 33)
Handler().postDelayed({ activity.pushQuestionHintFragment() }, 1000)
戻って、表示するために をTreasureHuntActivity
呼び出しますTreasureHuntQuestionHintFragment
fun pushQuestionHintFragment() {
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.container, TreasureHuntQuestionHintFragment.newInstance(), "questionHintFragment-${specificQuestionId}").addToBackStack("questionHintFragment-${specificQuestionId}").commitAllowingStateLoss()
fragmentManager.executePendingTransactions()
}
これは、Android 11 以前では完全に機能しますが、11 以降では機能しません。さらにデバッグすると、以前は
グローバルにfragmentManager
宣言されていたnullとして表示されます
var fragmentManager = supportFragmentManager
TreasureHuntActivity
Pixel 2 (Android の以前のバージョン) でデバッグすると、fragmentManager
は null ではなくBackStackEntry
.
ライフサイクルまたはフラグメントを 1.3.0 にするために、decencies を 2.2.0 または 2.3.0-alpha07 に更新しようとしましたが、まだ喜びはありませんでした。
はfragmentManager
、Android 11 の呼び出し時にのみ null になりますpushQuestionHintFragment()
。デバッグする場合this.isDestroyed
も当てはまりますが、Android 11 でのみです。