2014-01-13 56 views
0

如果切换按钮被选中或取消选中,我想要存储在SharedPreferences中。安卓ToggleButton总是检查

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); 
    } 

回答

2

在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));