android 破棄 向きの変更にUIを保存する-フラグメントを保持する場合、onSaveInstanceStateが期待通りに機能しない



setretaininstance (1)

compat lib v1を使用しています(特定のバグのためにv2 | 3を使用していません)。 この質問のバリエーション。

私はUIの方向を変更したい状態を維持したい、さまざまなコントロールを持つフラグメントを持っています。

親の活動はオリエンテーションの変更で破壊されています(活動のレクリエーションを避けるためにマニフェストの変更について教えてください!!!!)。

このフラグメントはsetRetainInstance(true)呼び出します。

1)今私の理解は、一意のIDを持つビューは、向きの変更を言うといくつかの状態を保持する必要があります。 これを考えると、非nullバンドルがonCreateView|onActivityCreatedにあると期待しますが、nullです。

2)いずれにしても、私がonSaveInstanceState状態を保存すると(私がスーパーを呼び出すことを保証する)、私はまだ 'onCreateView | onActivityCreated`にonSaveInstanceState取得します

3) setRetainInstance(true)onCreateView|onActivityCreatedないと、onSaveInstanceStateメソッドがなくても、 onCreateView|onActivityCreatedで非ヌルバンドルを取得します。

私が持っている質問は、これが期待どおりに機能していることと、ライフサイクルの理解が壊れていることですか? それにもかかわらず、私にとって最善の方法は、フラグメントを保持してから、フラグメント内のコントロールの状態を自分自身で維持することだと思います。

前もって感謝します。 ピーター


setRetainInstance(true)を使用すると、もちろんバンドルはnullです。 フラグメントは破壊されず、現在のアクティビティから切り離され、新しいアクティビティに添付されます。 フラグメントが破棄された場合にのみ、 onSaveInstanceState保存した値でバンドルを取得します。 setRetainInstance(true)を削除し、onCreateView()で保存した値を使用してカスタムビューをセットアップしてください。





android-fragments