我正在实现用户输入并保存 PIN 码的首选项。我为此使用了一个EditTextPreference
PIN 码应该正好是 4 位数字。为了验证它,我使用了以下OnPreferenceChangeListener()
方法
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()))
,即使它不是空的。
我不能用TextUtils.isEmpty(pinRetrieve.getText())
吗EditBoxPreference
?如果可以,为什么即使pinRetrieve.getText()
不为空,它也总是返回true?
谢谢