2

この種の質問が何度も出されたことは知っていますが、それでも誰も完璧な答えを出していません。

質問があります :

EditText1 ** から別の **EditText2に移動したい 。すでに editText1 を検出していましたが、カーソルを editText2 に移動するにはどうすればよいですか?

つまり、カーソル位置をある editText1 から別の EditText2 に直接移動する必要がありました。

4

5 に答える 5

8

私はこの種の問題に直面し、以下のような解決策を見つけました。

ここに2つのeditTextがあります。

「a」を押すと、カーソルが次のステップに移動します。私はそれを行うために以下のコードを使用しました。

 final EditText editText = (EditText) findViewById(R.id.editText1);

       editText.setOnKeyListener(new OnKeyListener() {

            @Override
            public boolean onKey(View v , int keyCode , KeyEvent event) {

                  EditText editText2 = (EditText) findViewById(R.id.editText2);

                // TODO Auto-generated method stub
                if (keyCode == event.KEYCODE_A) {

                    Selection.setSelection((Editable) editText2.getText(),editText.getSelectionStart());
                    editText2.requestFocus();
                }

                return true;
            }
        });

これに関してエラーが発生した場合はお知らせください。私の答えがあなたに役立つなら、それを受け入れて、賛成票を投じてください。

于 2012-05-02T09:15:05.727 に答える
1

これが実際の例です。これがお役に立てば幸いです。

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <EditText 
        android:id="@android:id/text1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Some string of text"
        />

    <EditText 
        android:id="@android:id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Some string of text"
        />

    <Button 
        android:id="@android:id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button"
        />

</LinearLayout>

クラス:

public class Example extends Activity {
    TextView text1;
    TextView text2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        text1 = (EditText) findViewById(android.R.id.text1);
        text2 = (EditText) findViewById(android.R.id.text2);
        Button button = (Button) findViewById(android.R.id.button1);

        button.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Selection.setSelection((Editable) text2.getText(), text1.getSelectionStart());
                text2.requestFocus();
            }
        });
    }
}
于 2012-05-01T14:01:28.777 に答える
1

onKeyListenerを設定して、押されたすべてのキーで押されたキーを検出し、条件をチェックし、条件がいつ満たされるかを設定します。setedittext property edittext2.requestFocus();

于 2012-05-02T05:15:34.390 に答える
0

以前のすべてのコードセグメントをテストしましたが、すべて正常に機能していることがわかりました。しかし、適切なedittextオブジェクトを使用して「requestFocus()」を呼び出すだけでも機能していることがわかりました。質問のとおり、ansは次のようになります。

edittext2.requestFocus();

これは私にとってはうまく機能しています。私が間違っている場合は訂正してください。

于 2013-03-06T08:12:43.413 に答える