【问题标题】:Checkbox state always stay checked复选框状态始终保持选中状态
【发布时间】:2019-07-22 22:03:32
【问题描述】:

如果我打开活动,复选框始终保持选中状态,即使我取消选中它并离开活动或关闭应用程序,它也会在重新启动活动后再次保持选中状态。

我尝试使用以下代码 sn-p 保存活动的状态。

checkBox1.setChecked(getSharedPreferences("NSUK", Context.MODE_PRIVATE).getBoolean("checkBox1", true));

        checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                getSharedPreferences("NSUK", Context.MODE_PRIVATE).edit().putBoolean("checkBox", isChecked).apply();

            }
        });

该复选框应始终处于用户离开它的状态(选中或未选中)。

【问题讨论】:

  • 设置检查 = true
  • 您能否通过注销来确认getSharedPreferences(...).getBoolean(...); 是否返回了正确的值?
  • 确保检查值实际保存到 SharedPreferences 并从中加载
  • 您正在使用“checkBox1”来读取和“checkBox”来写入首选项。

标签: android checkbox


【解决方案1】:

代码是正确的,但您存储和获取的数据来自不同的值。 您存储在 checkBox1 中并从 checkBox 中读取。试试这个

checkBox1.setChecked(getSharedPreferences("NSUK", Context.MODE_PRIVATE).getBoolean("checkBox", true));

        checkBox1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                getSharedPreferences("NSUK", Context.MODE_PRIVATE).edit().putBoolean("checkBox", isChecked).apply();

            }
        });

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多