ここでの目標は、ユーザーが連絡先情報を入力し、最終的に各フィールドに自動フォーマット(大文字、スペルなど)を適用する際に、各フィールドを検証することです。テキストフィールドで検証を実行する方法
私は以下のコードを使用してほぼ動作していますが、キーストップコールバックに基づいています。実際にトリガーしたいのは、各テキストフィールドの "フォーカスの喪失"です。何か案は?
public TextFormValidationCallback (CustomerFormActivity faja, String editTextName, Context context, EditText textField,
Button button, int rule) {
this.button = button;
this.textField = textField;
this.context = context;
this.ruleResourceId = rule;
this.editTextName = editTextName;
this.faja = faja;
this.res = context.getResources();
}
public boolean onEditorAction(TextView v, int keyCode, KeyEvent event) {
if (event != null) {
// If the event is a key-down event on the "enter" button
if ((event.getAction() == KeyEvent.ACTION_DOWN)
&& (keyCode == KeyEvent.KEYCODE_ENTER)) {
// Perform action on key press
Log.i("TextFormValidation",
"TextFormValidation callback activated!");
if (validateTextFieldNotNullData(this.textField)
&& (validateTextFieldFormat(this.textField,
ruleResourceId))) {
faja.setFieldValidationArray(getHeadingIndex(editTextName),
true);
if (faja.sumFieldValidations()) {
button.setClickable(true);
button.setText(R.string.addCustomer);
}
} else {
button.setText(R.string.next);
button.setClickable(false);
}
return true;
}
} else {
}
return false;
}
は、あなたのクリックイベント内の他のコントロール上のSetFocus()にしてみてください。 –
View.setOnFocusChangeListener()を試しましたか? – gngr44