フラグメントを使用してタブレット向けに最適化されたアプリケーションを作成しています。左側に薄いナビゲーションフラグメントがあり、画面の残りの部分を占める2つのViewGroupコンテナーにロードされるフラグメントを制御するボタンがあります。
たとえば、ナビゲーションフラグメントのボタンを押すと、最初のコンテナにアイテムリストフラグメント(設定、顧客など)が読み込まれ、2番目のコンテナにフラグメントが読み込まれてアイテムの詳細が表示されます。
フラグメントをメモリに保持したいので(つまり、[設定]から[顧客]に移動してから[設定]に戻るとき、ユーザーが以前の場所を失うことがないように、以前の設定フラグメントがそこにあるはずです)-フラグメントインスタンスを作成しましたアクティビティの変数
SettingsListFragment settingsListFragment;
SettingsDetailFragment settingsDetailFragment;
CustomerListFragment customerListFragment;
CustomerDetailFragment customerDetailFragment;
次に、必要に応じてこれらのフラグメントを作成し、必要に応じてコンテナーをフラグメントに置き換えます。例えば。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if(settingsListFragment == null){
settingsListFragment = new SettingsListFragment();
}
fragmentTransaction.replace(R.id.fragment_container_left, settingsListFragment);
fragmentTransaction.commit();
私の質問は、向きを変えてもこれらのインスタンスを保持するにはどうすればよいですか?
http://developer.android.com/resources/articles/faster-screen-orientation-change.htmlに従って、アクティビティonRetainNonConfigurationInstance()メソッドを使用するべきではないと想定してい ます。 onRetainNonConfigurationChange()をパススルーします...これは、ビュー、ドローアブル、アダプターなどを絶対に渡してはならないことを意味します。」
また、フラグメントマネージャからフラグメントを取得しようとしましたが、
Fragment clf = fragmentManager.findFragmentByTag("CLIENT LIST");
nullとして返されます。フラグメントが置き換えられた後にリリースされると思います。
ヘルプ/アドバイスをありがとう。