我有一个带有复选框的选项菜单。当用户单击该复选框时,我可以选中和取消选中该复选框,这很好。但是,我正在使用 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/