ユーザーが 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 を返すのはなぜですか?
ありがとうございました