2014-01-13 58 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));