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

标签 android checkbox android-optionsmenu

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

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

菜单是使用以下方法创建的:

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

最佳答案

我认为您缺少的唯一方法是菜单的 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;
}

关于android - 如何初始化选项菜单复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12332428/

相关文章:

安卓模拟器无法启动

php - 如何使用 php 将选定复选框中的值保存到文件中?

Python tkinter 复选框即使被选中也始终返回 0 值

android - 如何更改主题 "Theme.AppCompat.Light.NoActionBar"的选项菜单点颜色

android - 如何隐藏操作栏中的一些菜单?

android - 无法在 chrome 远程调试中检查 android 应用程序

java - 将 Android 中的 Joda 时间转换为本地时区

html - 为什么我们不能发布未选中的复选框?

android - 手动设置选项菜单面板的背景颜色

android - 如何更改 kotlin 中的语言(语言环境)