0
在我的偏好中,我有一個checkbox首選項和一個edittext首選項。複選框首選項允許使用PIN碼進入應用程序。 edittextpreference用於設置引腳。我正在努力做到這一點,以便如果用戶取消選中該框,它會立即擦除保存在編輯文本中的引腳。setOnPreferenceChangedListener似乎無法正常工作
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語句的烤麪包,它只是不會清除銷。
感謝