【问题标题】:Android ToggleButton always checkAndroid ToggleButton 总是检查
【发布时间】:2014-02-01 10:27:03
【问题描述】:

如果切换按钮被选中或取消选中,我想存储在 SharedPreferences 中。

 toggle.setOnCheckedChangeListener(new OnCheckedChangeListener(){
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)

if(isChecked){             
    SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
   editor.putBoolean("check", true);
      editor.commit();

    } 
else   {
  SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
   editor.putBoolean("nocheck", false);
   editor.commit();
}
}});

但是当我测试这个时,它总是设置为检查 在OnCreate() 我添加了这个:

SharedPreferences preferences = getSharedPreferences("SharedPrefName", MODE_PRIVATE);
    boolean value1 = preferences.getBoolean("check", true);  

    if (value1 = sharedPrefs.getBoolean("check", true)){
        psw.setChecked(value1);
    }else  {
        psw.setChecked(false);
    }

【问题讨论】:

    标签: android button sharedpreferences togglebutton


    【解决方案1】:

    在 OnCheckedChangeListener 中,如果复选框被选中,则保存 check = true。加载时,if 将始终为真,因为您将值与自身(或您提供为 true 的默认值)进行比较,因此它会选中该框。

    如果未选中该复选框,则保存nocheck = false。加载时,没有check 首选项(或者它具有先前保存的true 值),因此会加载默认的true

    修复您的代码:

    监听方法体:

    SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
    editor.putBoolean("check", ischecked);
    editor.commit();
    

    加载代码(用这个替换第二个sn-p):

    psw.setChecked(preferences.getBoolean("check", false));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-17
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2022-06-17
      • 2015-11-15
      • 1970-01-01
      相关资源
      最近更新 更多