不能将SharedPreferences与某些复选框一起使用

时间:2015-11-13 17:54:03

标签: android android-fragments checkbox sharedpreferences

我有一个片段,它启动了一个活动,其中我有各种复选框(Checkbox1,checkbox2等)。 我需要保持状态勾选/未记录保存,即使我返回到片段后又重新开始活动。

我试过这段代码,但它没有用

        final CheckBox checkBox5 = (CheckBox) findViewById(R.id.checkBox2);
    checkBox5.setChecked(false);

    checkBox5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (checkBox5.isChecked()) {
                buttonSound.start();
            } else {
                buttonSound.start();
            }
            SharedPreferences pref5 = PreferenceManager.getDefaultSharedPreferences(.this);                SharedPreferences.Editor editor5 = pref5.edit();
            editor5.putBoolean("checkbox", checkBox5.isChecked());
            editor5.commit();
            if (pref5.getBoolean("checkbox", false) == true){
                checkBox5.setChecked(true);
            } else{
                checkBox5.setChecked(false);
            }
        }
    });

任何人都可以告诉我我做错了什么吗?

活动在清单中声明,我只是想从这个活动回到片段,然后从片段转到此活动,发现这些复选框已标记!

1 个答案:

答案 0 :(得分:2)

检查是否实际检查了怎么办?:

    if (checkBox5.isChecked()) {
                SharedPreferences pref5 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                SharedPreferences.Editor editor5 = pref5.edit();
                editor5.putBoolean("checkbox", checkBox5.isChecked());
                editor5.commit();
        } else {
           // Remove the SharedPreferences here if false
    }

如果你通过editor5.putBoolean("checkbox", checkBox5.isChecked());并且没有检查它(因为不是......目前是假的),你将总是得到 FALSE

编辑:另外,请...检查onCreate / onCreateView / onResume上的布尔型SharedPreference状态或setOnCheckedChangeListener之外的任何其他位置。

相关问题