0

3 つの EditBox があります。1 つのボックスに数字が入力された後に次のフォーカスを設定する最良の方法と、box3 から box2、次に box1、または box3 から削除を追跡する (逆方向に移動する) 最良の方法は何ですか? box2 に入力してから、box3 に何かを入力しようとすると、それにフォーカスして、box2 に既に何かがある場合は box3 に新しい番号を入力できます。

私がここに投稿したものよりもはるかに単純なこの質問から始めたいと思います:(私がそこで何をしようとしているのかを見ることができますが、基本的なアイデアが得られれば、それをやってのけることができるかもしれません)。

問題の詳細を掲載

私は、削除用の OnkeyListener と入力用の TextWatch の 2 つの異なるものを使用して大きな問題を抱えています。正しく理解できないようです。アンドロイド初心者。

4

1 に答える 1

1

ここでは、各編集ボックスにそれぞれ 3、3、4 桁の携帯電話番号を表示し、フォーカスを変更する 3 つの編集ボックスを持つ簡単な例を 1 つ示します。

XML

            <EditText
                android:id="@+id/edtxt_phonenumber_one"
                android:layout_width="wrap_content"
                android:layout_height="39dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/textbox_1"
                android:ems="3"
                android:maxLength="3"
                android:gravity="center"
                android:inputType="number" />

            <EditText
                android:id="@+id/edtxt_phonenumber_two"
                android:layout_width="wrap_content"
                android:layout_height="39dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/textbox_1"
                android:ems="3"
                 android:maxLength="3"
                android:gravity="center"
                android:inputType="number" />

            <EditText
                android:id="@+id/edtxt_phonenumber_three"
                android:layout_width="wrap_content"
                android:layout_height="39dp"
                android:layout_margin="5dp"
                android:layout_weight="1"
                android:background="@drawable/textbox_1"
                android:ems="4"
                 android:maxLength="4"
                android:gravity="center"
                android:inputType="number" />
        </LinearLayout>

クラス

//Initialize 3 of EditBox.

// Rest of te code

edtxt_phonenumber1.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {

                if (s.length() > 2) {
                    edtxt_phonenumber2.requestFocus();
                }
                            if (s.length()==0) {
                //previoue_box.requestFocus();
            }
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
            }
        });

        edtxt_phonenumber2.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {
                if (s.length() > 2) {
                    edtxt_phonenumber3.requestFocus();
                }
                            if (s.length()==0) {
                edtxt_phonenumber1.requestFocus();
            }
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {


            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {

            }
        });
        edtxt_phonenumber3.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {
                if (s.length() > 3) {
                    edtxt_email.requestFocus();
                }
                            if (s.length()==0) {
                edtxt_phonenumber2.requestFocus();
            }
            }

            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {


            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {


            }
        });

それが役に立てば幸い!!

于 2013-09-05T06:09:57.823 に答える