2017-12-17 16 views
0

私はHandling Configuration Changes文書を読んでいました。`FragmentManager`はアクティビティライフサイクルから独立していますか?

文書がtruesetRetainInstanceセットを有する断片を使用し、fragmentManager'sfindFragmentByTag方法を介して断片を回収するアドバイス。

私の質問は、アクティビティが破棄されたときにfragmentManagerが生き残るのですか?それはsharedPreferencesのようなものですか?値がコミットされている限り、アクティビティに何が起きても、そこに格納されている値は影響を受けませんか?

答えて

1

いいえあなたはフラグメントののonCreate内setRetainInstance(真)を設定し、(フラグメントタグと、「my_fragment」と言う)、あなたの親アクティビティの向きが変化し、アンドロイドフレームワークは、フラグメントのインスタンスを保存する限り、活動が破壊されていないので。親アクティビティにフラグメントタグ変数を保存して復元すると(例:https://stackoverflow.com/a/47823139/7152359を参照)、getSupportFragmentManager()...を呼び出して、保存したタグ "my_fragment"を使用してフラグメントを設定できます。

簡単な言葉で言えば、setRetainInstance(true)は開発者がonSaveInstanceState(..)およびonRestoreInstanceState(..)の複雑な/長いプロシージャを経由しないようにするためにのみ使用されます。

+0

明確にするには、 'fragmentManager'は設定の変更を受け継ぐことができません。右?このアクティビティは処理中に破棄されるためです。 これが当てはまる場合、 'onCreate'が再び呼び出され、' getFragmentManager'が呼び出されたときに、保存されたフラグメントをどのように取り出すことができますか? –

+1

バディー、onDestroyには2つの異なる解釈があります。アクティビティのonDestroy()関数をオーバーライドすると、isFinishing()関数を使用して、アクティビティが実際に破棄されているかどうか(true)を検出できます。 isFinishingがfalseを返すとき、setRetainInstanceはonDestroyを継承します。 – Robillo

+0

私は見る!ありがとうございました。それはそれを説明する。 –

関連する問題