2012-05-01 2 views
2

Я знаю, что этот вопрос задавался много раз. Но все же никто не дал для этого идеального ответа.Android Переместить курсор из одного EditText в другой?

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

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

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

+0

Если вы хотите переместить курсор из Edittext1 в Edittext2 –

+0

@KrishnakantDalal, когда я обнаруживаю какой-то особый символ в моем первом editText1, он переместится на следующий editText2. Я успел обнаружить специального персонажа, но не знал, как перенести его в реальном времени. –

ответ

6

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

Здесь у меня есть два 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; 
      } 
     }); 

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

+0

Спасибо за ан. иногда он не работал, когда я зарегистрировался на реальном устройстве. –

+0

Я нашел лучшее решение здесь http://stackoverflow.com/questions/12418324/android-move-cursor-from-one-edittext-to-another-one-if-click-any-letter-in-fiel –

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(); 
      } 
     }); 
    } 
} 
+0

Спасибо за ваш ответ. Я хочу, чтобы это было в реальном времени. , когда я обнаруживаю какой-то особый символ в моем первом курсе editText1, будет перемещен в следующий editText2. Я успел обнаружить специального персонажа, но не знал, как перенести его в реальном времени. –

1

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

0

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

edittext2.requestFocus();

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