在我的偏好中,我有一个checkboxpreference和一个edittextpreference。 Checkbox首选项允许使用PIN码进入应用程序。 edittextpreference用于设置引脚。我试图这样做,以便如果用户取消选中该框,它会立即删除编辑文本中保存的图钉。
CheckBoxPreference prefCodePasscode = (CheckBoxPreference) findPreference("prefCodePasscode");
prefCodePasscode.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (sharedPrefs.getBoolean("prefCodePasscode", false)) {
Toast.makeText(getApplicationContext(), "Setting Changed",
Toast.LENGTH_SHORT
).show();
editor.remove("prefPasscode");
editor.commit();
}
return true;
}
});
似乎正在发生的事情是,在关闭首选项活动之前,它实际上并未提交删除。这导致的问题是,如果用户取消选中该框(它将被删除),然后重新检查它并关闭活动。然后它会擦除引脚(但引脚已启用。)这意味着当用户尝试输入引脚时,没有任何内容可以对其进行验证。
任何人都知道为什么一旦取消选中该复选框就不会删除该引脚?
它会显示我在同一个if语句中写过的吐司,它只是不会清除它。
由于
答案 0 :(得分:2)
而不是用
删除首选项editor.remove("prefPasscode");
尝试
editor.putString("prefPasscode", "");