1

ユーザーが入力する必要がある一連の 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;
        }
    }); 

どんな助けでも大歓迎です..

4

0 に答える 0