0

我的代码:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    Intent settingsActivity = new Intent(getBaseContext(), Preferences.class);
    startActivity(settingsActivity);
    return true;
}

这可以打开设置菜单(Preferences.class),但如果在按下此系统按钮时它已经打开,我希望它关闭菜单。我可以添加或更改什么来实现这一点?

4

2 回答 2

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);
    }

这会将用户带回屏幕进行另一轮游戏。我不知道这对于每种情况是否都是可接受的解决方案,但它对我有用。

于 2013-08-04T16:24:59.837 回答
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 Activity 中,覆盖它以扩展您的 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);
    }
}
于 2013-08-03T04:56:07.927 回答