我正在實現用戶輸入並保存PIN號碼的首選項。我使用的是EditTextPreference
,PIN碼應該是4位數字。爲了驗證它,我用下面的OnPreferenceChangeListener()
方法Android - 從EditTextPreference獲取文本並進行驗證
final EditTextPreference pinRetrieve = (EditTextPreference)getPreferenceScreen().findPreference("create_pin");
pinRetrieve.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object o) {
Boolean rtnval = true;
if (TextUtils.isEmpty(pinRetrieve.getText())){
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.pin_error_heading);
builder.setMessage(R.string.pin_alert_pin_not_set);
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
pinSetting.setChecked(false);
rtnval = false;
} else if (pinRetrieve.getText().length() < 4){
final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.pin_error_heading);
builder.setMessage(R.string.pin_alert_pin_less_digits);
builder.setPositiveButton(android.R.string.ok, null);
builder.show();
pinSetting.setChecked(false);
rtnval = false;
}
return rtnval;
}
});
即使當我輸入4位數字,我收到警告框,R.string.pin_alert_pin_not_set
的消息,我認爲發生的事情是它總是轉到if (TextUtils.isEmpty(pinRetrieve.getText()))
,甚至當它不是空的時候。
我不能在EditBoxPreference
上使用TextUtils.isEmpty(pinRetrieve.getText())
?如果我可以,爲什麼它總是返回true,即使pinRetrieve.getText()
不是空的?
謝謝
爲什麼您的editext偏好是最終的? – user2450263
試圖刪除最後。然後AndroidStudio說我不能在內部類'onPreferenceChange()'' – Sudara