32

How to automatically move to the next edit text in android に投稿された質問と回答によると、コードを使用して次の編集ボックスに移動しました。

et1.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start,int before, int count) 
    {
        // TODO Auto-generated method stub
        if(et1.getText().toString().length()==size)     //size as per your requirement
        {
            et2.requestFocus();
        }
    }
    public void beforeTextChanged(CharSequence s, int start,
                    int count, int after) {
                // TODO Auto-generated method stub

    }

    public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
    }

});

私が直面している問題は、何か間違ったことを入力した場合に備えており、ユーザーが明示的に focus を要求しても、テキスト ウォッチャーのコードにより、テキスト ボックスが次のボックスに移動します。これを防ぐためにできることはありますか?

4

10 に答える 10

37

非常に遅いかもしれませんが、はるかに簡単に適用できる解決策があります。このコードを、layout.xml ファイルの edittext フィールドに追加するだけです。これを、完了ボタンの代わりに次のボタンを表示する edittext に追加します。したがって、次の Edittext フィールドを指します。

android:imeOptions="actionNext"
于 2013-10-31T09:15:20.913 に答える
13

最初の EditText で押されたキーを確認し、それが「Enter」キーだった場合は、次の EditText にフォーカスを移動します。

次の編集テキストへのKeyCode_Enter

于 2012-09-19T04:39:05.180 に答える
6

期待に応えるには、ユーザー入力を検証する必要があります。それが満たされている場合は、呼び出すだけですet2.requestFocus()

于 2012-09-19T04:41:43.453 に答える
4

それは私のために働く:

final EditText code1=((EditText)view.findViewById(R.id.code1));
    final EditText code2=((EditText)view.findViewById(R.id.code2));
    final EditText code3=((EditText)view.findViewById(R.id.code3));
    final EditText code4=((EditText)view.findViewById(R.id.code4));



    OnKeyListener key=new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if(!((EditText) v).toString().isEmpty())
            v.focusSearch(View.FOCUS_RIGHT).requestFocus();

            return false;
        }
    };




    code1.setOnKeyListener(key);
    code2.setOnKeyListener(key);
    code3.setOnKeyListener(key);
于 2013-10-25T18:51:40.817 に答える
2

if 条件が正しいかどうかを確認することもできます..

if(et1.getText().toString().length()==size)     //size as per your requirement
    {
        if(et1.gettext.toString().equals(somethingwhichyouhavecheck))
        {

                   et2.requestFocus();
        }
        else
         {
         }
    }
于 2012-09-19T04:31:33.490 に答える
1

このコードは期待どおりに機能します。

etFName.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(etFName.getText().toString().length()==4 && keyCode == KeyEvent.KEYCODE_BACK)
                {
                    typinget1 = true;
                }
                else if(etFName.getText().toString().length()==4 && typinget1==true)     //size as per your requirement
                {
                    typinget1 = false;
                    etLName.requestFocus();

                }
                else if(etFName.getText().toString().length()<=4 && typinget1==false)
                {
                    typinget1 = true;

                }

                return false;
            }
        });
于 2012-09-19T06:28:05.677 に答える
-4

これには非常に簡単な解決策があります。次のプロパティをxml edittextコントロールに配置するだけです

android:inputType="textPersonName"

于 2015-01-31T20:36:03.897 に答える