背景:
我正在使用 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;
}
资源/菜单/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,则单击操作栏中的首选项图标,在 PrefsFragemnt 可见时单击操作栏中的首选项图标不会执行任何操作,在 PrefsFragment 上单击返回按钮始终返回主屏幕。