ユーザーが入力する必要がある一連の EditText がアプリに含まれています。ソフト キーボードで [次へ] を押すと、フォーカスが次の EditText に進み、最後の EditText でソフト キーの Enter アクションをキャプチャして、入力したテキストを検証して送信します。データ。検証エラー (入力されていないフィールドなど) がある場合、関連するフィールド (つまり、入力されていないフィールド) はフォーカスを要求し、エラーを表示するトーストも表示します。
同じ検証関数を呼び出す [送信] ボタンを使用すると正常に動作します (正しいアイテムにフォーカスします) が、ソフト キーボードの [Enter] ボタンを押すと、検証エラーの原因となった EditText にフォーカスがジャンプし、すぐに移動します。その直後のもの。
これは、最後の EditText にリスナーを設定するスニペットです。
lastEditText.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
if(validateFields()){ //Validation function
sendPressed(); //Submit function
}
return true;
}
return false;
}
});
どんな助けでも大歓迎です..