I am implementing a Preference where users enter and save a PIN number. I am using an EditTextPreference
for that and the PIN number should exactly be 4 digits. In order to validate it, I used the following OnPreferenceChangeListener()
method
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;
}
});
Even when I enter 4 digits, I am getting the alert box with R.string.pin_alert_pin_not_set
as the message, what I think happening is it always goes to if (TextUtils.isEmpty(pinRetrieve.getText()))
, even when it is not empty.
Can't I use TextUtils.isEmpty(pinRetrieve.getText())
on EditBoxPreference
? If I can why does it always return true even when the pinRetrieve.getText()
is not empty?
Thank you