我为PreferenceActivity提供了一个菜单。在我的孩子偏好屏幕中,我丢失了该菜单(没有弹出)。我怎样才能为孩子们弹出菜单?
感谢。
示例:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:persistent="true">
<PreferenceCategory
android:title="some category"
android:persistent="true"
android:orderingFromXml="true">
<PreferenceScreen
android:title="some child screen"
android:summary="some child summary">
<PreferenceCategory
...
第一个首选项屏幕有菜单,但是当您点击子菜单时,没有菜单。如何添加菜单?
答案 0 :(得分:3)
我有更好的解决方案,因为Suriya受到孩子PreferenceScreen的双重显示。
对于子PreferenceScreen,我使用相同的PreferenceActivity。所以首先对于我们想要使用选项菜单的子PreferenceScreen,我们在onCreate方法中将意图设置为PreferenceActivity:
ourPreferenceScreen = (PreferenceScreen) findPreference("our_preference_screen");
if (ourPreferenceScreen != null) {
Intent intent = new Intent(this, PreferenceActivity.class);
intent.putExtra("ShowOurPreferenceScreen", true);
ourPreferenceScreen.setIntent(intent);
}
然后在同一个onCreate方法中,我们检测我们的PreferenceActivity是否以额外标志启动。如果是这样,我们切换到想要的PreferenceScreen:
if (getIntent().getBooleanExtra("ShowOurPreferenceScreen", false)) {
setPreferenceScreen(ourPreferenceScreen);
return;
}
最后我们讨论了onCreateOptionMenu以及其他相关的选项菜单方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (getPreferenceScreen().equals(ourPreferenceScreen)) {
// your menu code
return true;
}
return super.onCreateOptionsMenu(menu);
}
答案 1 :(得分:1)
我遇到了类似的问题。以下是我为克服这个问题所做的工作。
在preferenceActivity onCreate方法中,
final PreferenceScreen childPref = (PreferenceScreen) findPreference("childPrefId");
childPref .setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference)
{
Intent intent = new Intent(PreferenceActivity.this, YourSettings.class);
intent.setAction("ShowChildPref");
startActivity(intent);
return true;
}
});
Intent intent = getIntent();
if(intent.getAction() != null && intent.getAction().equals("ShowChildPref"))
{
setPreferenceScreen(childPref);
/*Set Flags here based on intent what kind of menu to create in OnPrepareMenu.*/
}
}
答案 2 :(得分:-1)
您必须在每个类中添加菜单代码,以便使用菜单按钮调出菜单。仅仅因为其他活动在后台并不意味着菜单将启动。它需要在每个类中设置,并且需要可用的菜单。