我的代码:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Intent settingsActivity = new Intent(getBaseContext(), Preferences.class);
startActivity(settingsActivity);
return true;
}
这可以打开设置菜单(Preferences.class
),但如果按下此系统按钮时菜单已经打开,我希望它关闭菜单。我可以添加或更改什么来实现这一目标?
答案 0 :(得分:0)
以下是您应该如何实现您想要的内容:
首先,您要提供一个“设置”项,用户可以选择该项来到Preferences
课程。您可以通过向menu/main.xml
添加项目并在onCreateOptionsMenu()
中对其进行充气来实现此目的。
菜单/ main.xml中:强>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Settings"/>
...
</menu>
在您的主要活动中,重写此内容以扩充您的main.xml文件:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
...
return super.onCreateOptionsMenu(menu);
}
然后重写此选项以处理选择Menu
项目时发生的情况,在本例中为Settings
项目:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_settings:
Intent settingsActivity = new Intent(getBaseContext(), Preferences.class);
startActivity(settingsActivity);
return true;
...
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:0)
我可以通过将其添加到我的自定义首选项菜单类来关闭菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
onBackPressed();
return false;
}
称之为:
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
将用户带回屏幕再玩一轮。我不知道这是否是每个案例都可接受的解决方案,但它对我有用。