如果切换按钮处于选中或取消选中状态,我想存储在 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);
}
在 OnCheckedChangeListener 中,如果选中该复选框,则保存check
= true
。加载时,if
将始终为真,因为您正在将值与其自身进行比较(或您给出的默认值)true
)所以它会选中该框。
如果未选中该复选框,则保存nocheck
= false
。加载的时候没有check
首选项(或者它具有以前保存的true
值)所以默认true
已加载。
修复你的代码:
监听器方法体:
SharedPreferences.Editor editor = getSharedPreferences("SharedPrefName", MODE_PRIVATE).edit();
editor.putBoolean("check", ischecked);
editor.commit();
加载代码(用此替换第二个片段):
psw.setChecked(preferences.getBoolean("check", false));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)