android - 菜单android上的复选框项目状态

标签 android android-checkbox

如何设置菜单的复选框项目部分的初始值?当我开始一个 Activity 时,我想设置一个保存在共享首选项中的 bool 值。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".LoginActivity">
    <item
        android:id="@+id/checkbox"
        android:title="@string/checkbox"
        android:orderInCategory="10"
        android:showAsAction="never"
        android:visible="true"
        android:checkable="true"
        android:checked="true"/>
</menu>

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.login, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.checkbox){

        if(item.isChecked()){
            item.setChecked(false);
        }else{
            item.setChecked(true);
        }
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean(PrefsConsts.CHECKBOX,item.isChecked());
        editor.commit();

    }
    return true;
}

我总能知道值是多少,但我不知道如何设置新值。

最佳答案

首先去掉布局中勾选的值

    <item
        android:id="@+id/action_check"
        android:title="@string/action_check"
        android:orderInCategory="200"
        app:showAsAction="never"
        android:visible="true"
        android:checkable="true"/>

现在可以在代码中设置了:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    SharedPreferences settings = getSharedPreferences("settings", 0);
    boolean isChecked = settings.getBoolean("checkbox", false);
    MenuItem item = menu.findItem(R.id.action_check);
    item.setChecked(isChecked);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_check) {
        item.setChecked(!item.isChecked());
        SharedPreferences settings = getSharedPreferences("settings", 0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean("checkbox", item.isChecked());
        editor.commit();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

关于android - 菜单android上的复选框项目状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122447/

相关文章:

android - flutter 如何将Future <bool>设置为普通 bool 类型

android - 是否可以动态设置 Android Wear 表盘的预览图像?

java - 在静态 SQLiteDatabase 类中调用非静态方法

java - 如何正确确定用户是否使用时间顺时针或逆时针拖动我的圆轮 slider ?

android - 在 ActionBar 的菜单项上添加复选框

android - 如何检查所有复选框都在按钮上选中单击在android中

android - 从多个复选框中选择一个复选框并让用户选中复选框

android - Firestore 将 HashMap 添加到 Firestore 中的映射字段

java - 选中 CheckBox 时更改 ListView 行中的文本颜色

android - 折叠/展开可扩展 ListView 会更改 checkedtextview 中随机子项的切换