このチュートリアルに基づいてレイアウトを実装しました:http://android-developers.blogspot.hu/2011/02/android-30-fragments-api.html
違いは次のとおりです。
- 左側のリストの選択に基づいて、表示するフラグメントが異なります
- 「詳細フラグメント」(右側にあるもの)には、さまざまなオプションメニューがあります
私の問題は、すでに左から何かを選択してから電話を縦向きに回転させた場合、最後のオプションメニューがまだそこにあり、表示されていることです。
問題は、向きの変更後に最後にアクティブな「詳細」フラグメントが再作成されたことに起因すると思います。それをテストするために、次の2つのメソッドを作成しました。
@Override
public void onStart() {
super.onStart();
setHasOptionsMenu(true);
}
@Override
public void onStop() {
super.onStop();
setHasOptionsMenu(false);
}
そして、私はこのような正しいフラグメントを示しています:
case R.id.prefs_medicines:
if (mDualPane) {
// Check what fragment is shown, replace if needed.
View prefsFrame = getActivity().findViewById(R.id.preferences);
if (prefsFrame != null) {
// Make new fragment to show this selection.
MedicineListF prefF = new MedicineListF();
// Execute a transaction, replacing any existing
// fragment with this one inside the frame.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.preferences, prefF);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
} else {
// Otherwise we need to launch a new activity to display
// the dialog fragment with selected text.
Intent intent = new Intent();
intent.setClass(getActivity(), MedicinePrefsActivity.class);
startActivity(intent);
}
break;
私の「詳細」フラグメントの1つにあります。デバッグしたところ、ローテーション後にonstartが呼び出されました。
写真の問題:
1:ランドスケープではOK ランドスケープモードhttp://img834.imageshack.us/img834/8918/error1d.png
2:ポートレートの場合:optionsmenuは不要 ポートレートモードhttp://img860.imageshack.us/img860/8636/error2r.png
ポートレートモードでオプションメニューを削除するにはどうすればよいですか?