setOnPreferenceChangedListener似乎无法正常运行

时间:2014-07-22 14:50:55

标签: android android-preferences

在我的偏好中,我有一个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语句中写过的吐司,它只是不会清除它。

由于

1 个答案:

答案 0 :(得分:2)

而不是用

删除首选项
editor.remove("prefPasscode");

尝试

 editor.putString("prefPasscode", "");