compat lib v1を使用する(あるバグのためにv2 | 3を使用しない)。バリエーションはthis questionです。オリエンテーションの変更にUIを保存する - onSaveInstanceStateが保持されていると期待通りに機能しないフラグメント
私はUIの向きを変えずに維持したいさまざまなコントロールを持つフラグメントを持っています。
オリエンテーションの変更で親のアクティビティが破壊されています(アクティビティの再作成を避けるためにマニフェストの変更について教えてください!!!!)。
setRetainInstance(true)
を呼び出します。
1)私の理解では、一意のIDを持つビューは、向きの変更などの状態を保持する必要があります。これを考えると、ヌル以外のバンドルはonCreateView|onActivityCreated
になると予想しますが、nullです。私はonSaveInstanceState
で状態を保存する場合はいずれの場合も
2)(私はまだ「でヌルの束を得る)スーパー呼び出す確保onCreateView | onActivityCreated`
3)私はsetRetainInstance(true)
を呼び出さない場合、私は入手できますかonSaveInstanceStateメソッドを持たない場合でも、null以外のバンドルはonCreateView|onActivityCreated
にあります。
私の質問は、これが期待通りに機能していることと、ライフサイクルの理解が壊れていることですか?それにもかかわらず、私にとって最善の方法は、フラグメントを保持してから、フラグメント内のコントロールの状態を自分自身で維持することだと思います。
ありがとうございます。ピーター
これを解決できましたか? Imはまったく同じ問題を抱えています。 – blindstuff
@blindstuffいいえ、私は 'setRetainInstance(true)'を呼んでいるので、それがバグであるかフィーチャーであるかはまだ分かりません。私が非ヌルバンドルを取得した場合、アプリがメモリ不足の状態で破棄され、おそらく機能が破棄されたとします。私は基本的に 'onDestroyView'のコントロールの状態を保存し、バンドルがnullのときに' onCreateView'のコントロールを復元するためにそれらを使うことで回避しています。私は同様に 'onSaveInstanceState'に状態を保存することを同様に確認します。 – PJL
おかげさまで、私はこれを恐れていました。ローテーション中にAsyncTaskを保持しようとしているので、あなたが思った通りの経路を取ることはできません。私はこの問題にもっと関心を持つように質問を投稿するつもりです。 – blindstuff