如何初始化选项菜单复选框

时间:2012-09-08 16:22:29

标签: android checkbox android-optionsmenu

我有一个带复选框的选项菜单。当用户点击它时,我可以选中并取消选中该复选框。但是,我使用SharedPreferences来存储此复选框的值,因此我还需要做的是使用存储在SharedPreferences pref值中的任何内容初始化复选框,即如果pref为true / false,则将复选框设置为选中/未选中状态。

我想我需要在onCreateOptionsMenu中放入一些代码,我显然需要使用.setChecked(首选项)来设置复选框,但是我如何以编程方式引用复选框本身?

使用以下命令创建菜单:

public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
return true;
}

可以使用以下方式选中/取消选中该复选框:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.two_week:
            if (item.isChecked()) {
                item.setChecked(false);
            }
            else {
                item.setChecked(true);
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);
     }
}

1 个答案:

答案 0 :(得分:9)

我认为你唯一缺少的方法是Menu的findItem()。您可以像这样轻松加载任何SharedPreferences(此处称为prefs):

SharedPreferences prefs;
...

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    boolean checked = prefs.getBoolean("two weeks", false);
    menu.findItem(R.id.two_week).setChecked(checked);
    return true;
}