2

私は、メインアクティビティに2つのフラグメントがあるタブレットアプリケーションに取り組んでいます。左側のフラグメントは、ユーザーがタブを選択するか、アクションバー内の2つのスピナーからアイテムを選択すると内容が更新されるリストフラグメントです。

もともと私はonConfigurationChangedをオーバーライドすることで向きの変更を処理しました。これはGoogleからのアドバイスではなく、ActionBarSherlockで問題が発生するため、正しい方法で作業を開始しました。向きを変更するためにインスタンス(setRetainInstance)を保持するようにフラグメントを設定しました。

問題は、方向が変更されたときに、アクティビティのOnCreateメソッドがアクションバーにタブを追加し、タブを選択してリストを再ロードすることです。これは、回転時に新しいアイテムが選択されるときにスピナーでも発生します。向きを変更すると、リストフラグメントを更新する必要がなくなります。

タブとスピナーの状態を保存できることは知っていますが、onTabSelectedメソッドとonItemSelectedメソッドで行われるため、リストの更新を停止するにはどうすればよいですか?

4

2 に答える 2

1

これが適切な方法かどうかはわかりませんが、最初のOnCreateの後に設定され、OnPause / OnDestroyでリセットされるローカル変数(ブール値)を作成できます。次に、作成された変数を使用して、onCreateメソッドの一部のコードセグメントの実行を除外できます。

于 2012-05-26T01:29:47.350 に答える
1

onRetainNonConfigurationInstance()向きの変更時に変更されるべきではない状態を保存するために使用するのはどうですか? たとえば、@ThomasKJDK の answerbooleanに従う場合、このメソッドでを設定できます。booleanこれをonCreate();で取得できます。これに基づいて、さまざまなコード セグメントの実行を決定しますboolean

このアプローチの詳細については、こちらをご覧ください。

于 2012-05-29T11:58:15.260 に答える