バックグラウンド:
私はPreferencesFragmentを使用してAndroidアプリの設定を管理しており、オプションメニューを使用してそれらの設定にアクセスしています。
MainActivity クラスのオーバーライドされたメソッド:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menu_prefs:
PrefsFragment prefs = new PrefsFragment();
getFragmentManager()
.beginTransaction()
.replace(R.id.main_container, prefs)
.addToBackStack(null)
.commit();
break;
}
return true;
}
res/menu/menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu_prefs"
android:icon="@android:drawable/ic_menu_preferences"
android:title="@string/menu_prefs_title"
android:showAsAction="ifRoom|withText">
</item>
</menu>
問題:
- メイン画面で、アクション バーの設定アイコンをクリックすると、PrefsFragment が起動します。
- PrefsFragment で、アクション バーの設定アイコンをクリックすると、PrefsFragment が再び起動します(ここで問題が発生します)。
- 戻るボタンを押すと、フラグメント トランザクションが元に戻り、PrefsFragmentに戻ります。(メイン画面に戻るはずです)。
質問: PrefsFragment の二重表示を無効にするスマートな方法はありますか?
望ましい結果: メイン画面に PrefsFragment が表示されている場合にアクション バーの prefs アイコンをクリックすると、PrefsFragment が表示されているときにアクション バーの prefs アイコンをクリックしても何も起こらず、PrefsFragment で [戻る] ボタンをクリックすると常にメイン画面に戻ります。