2014-07-22 186 views
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語句的烤麪包,它只是不會清除銷。

感謝

回答

2

,而無需刪除與

editor.remove("prefPasscode"); 

偏好嘗試

editor.putString("prefPasscode", ""); 
相關問題