背景:如何防止雙重addtobackstack同時PreferencesFragment在android系統
我使用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.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?
期望的結果: 單擊首選項在操作欄圖標,如果在主屏幕上顯示PrefsFragement,點擊操作欄的首選項圖標,而PrefsFragemnt可見什麼也不做,單擊後退按鈕,同時PrefsFragment一直追溯到主屏幕。
Grzegorz,不錯的工作:-)。對於這個非常常見的用例,shame android沒有任何「內置」的東西。 – Hector 2013-07-23 12:29:32