如何使用PrepareOptionsMenu来“切换”我的偏好类

时间:2013-08-03 02:39:10

标签: android preferences

我的代码:

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

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

2 个答案:

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

将用户带回屏幕再玩一轮。我不知道这是否是每个案例都可接受的解决方案,但它对我有用。