0

ユーザーが 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())EditBoxPreferencepinRetrieve.getText()が空でない場合でも、常に true を返すのはなぜですか?

ありがとうございました

4

2 に答える 2