Android Переместить курсор из одного EditText в другой?

Я знаю, что такие вопросы задавали много раз, но до сих пор никто не дал на них идеального ответа.

У меня вопрос :

Я хочу перейти от EditText1 ** к другому **EditText2 . Я уже обнаружил editText1, но как переместить курсор в editText2.?

Короче говоря, мне пришлось напрямую переместить позицию курсора из одного editText1 в другой EditText2.


person full Error    schedule 01.05.2012    source источник
comment
Когда вы хотите переместить курсор из Edittext1 в Edittext2   -  person Krishnakant Dalal    schedule 01.05.2012
comment
@KrishnakantDalal, когда я обнаруживаю какой-то специальный символ в своем первом editText1, он переходит к следующему editText2. Мне удалось обнаружить специальный символ, но я не знал, как его перемещать в реальном времени.   -  person full Error    schedule 02.05.2012


Ответы (5)


Я столкнулся с проблемой такого типа и нашел решение, как показано ниже.

Здесь у меня есть два editText ,

если я нажму «а», мой курсор переместится на следующий шаг. Я использовал приведенный ниже код для этого.

 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;
            }
        });

дайте мне знать, если вы столкнулись с какой-либо ошибкой по этому поводу. Если мой ответ полезен для вас, пожалуйста, примите его и оцените, чтобы проголосовать.

person NovusMobile    schedule 02.05.2012
comment
Спасибо за ответ. иногда это не работало, когда я регистрировался на реальном устройстве. - person full Error; 02.05.2012
comment
Я нашел лучшее решение здесь stackoverflow.com/questions/12418324/ - person LOG_TAG; 15.07.2014

Вот рабочий пример, надеюсь, это поможет.

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();
            }
        });
    }
}
person Sam    schedule 01.05.2012
comment
Спасибо за Ваш ответ. Я хочу, чтобы это было в реальном времени. когда я обнаружу какой-то специальный символ в своем первом курсоре editText1, он будет перемещен в следующий editText2. Мне удалось обнаружить специальный символ, но я не знал, как его перемещать в реальном времени. - person full Error; 02.05.2012

Установите onKeyListener для обнаружения нажатия клавиши при каждой нажатой клавише, проверенной вашим условием, и когда ваше условие будет выполнено, установите свойство edittext edittext2.requestFocus();

person Krishnakant Dalal    schedule 02.05.2012

Для этого все, что вам нужно сделать, это... добавить ниже два свойства в ваш тег EditText в xml, кроме последнего EditText (в случае, если вы добавите его также в последний EditText, тогда управление курсором снова перейдет к первому EditText при нажатии Enter/Next с клавиатуры)

<EditText . . android:singleLine="true" android:imeOptions="actionNext" . . />

Надеюсь это поможет

person Avi    schedule 03.09.2018

Я протестировал все предыдущие сегменты кода и обнаружил, что все они работают нормально. Но я считаю, что просто вызов «requestFocus()» с соответствующим объектом edittext также работает. В соответствии с заданным вопросом ответ может быть:

edittext2.requestFocus();

который отлично работает для меня. Пожалуйста, поправьте меня, если я ошибаюсь.

person Dibyendu    schedule 06.03.2013