2012-06-21 1 views
13

У меня есть макет с двумя редакторами. Мне нужно установить второй, сфокусированный и редактируемый, когда клавиша ввода будет нажата на первую. У меня есть код для настройки фокуса, но я не может начать вводить, когда второй получает фокус.Установить следующий EditText сфокусированный и редактируемый на KEY_DOWN

PS Мне также требуется, чтобы текст был ровно одной строкой без возможности создания дополнительных строк. Он работает также. PSS андроид код 2,3

XML:

<EditText 
      android:id="@+id/email" 
      style="@style/profileLoginInput" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" android:hint="@string/email" android:ems="10" android:lines="1" android:maxLines="1" android:ellipsize="end"> 

      <requestFocus /> 
     </EditText> 

<EditText 
      android:id="@+id/password" 
      style="@style/profileLoginInput" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="20dp" 
      android:ems="10" 
      android:inputType="textPassword" android:hint="@string/password"> 

Java код:

((EditText) findViewById(R.id.email)).setOnKeyListener(new OnKeyListener(){ 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) 
      { 
       if (event.getAction() == KeyEvent.ACTION_DOWN) 
       { 
        switch (keyCode) 
        { 
         case KeyEvent.KEYCODE_DPAD_CENTER: 
         case KeyEvent.KEYCODE_ENTER: 
         ((EditText) findViewById(R.id.password)).requestFocus(); 
         return true; 
         default: 
          break; 
        } 
       } 
       return false; 
      } 
     }); 
+1

-its a, android: nextFocusDown = "@ id/editText2", удалить '+' из id. И попробуйте еще раз, дайте мне знать, что происходит шляпа .. – user370305

+0

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

+0

Ваш код отлично работает в моем случае .. – user370305

ответ

2

Кажется, что он прослушивается при запуске этого кода на эмуляторе. Тем не менее, она работает на телефонах

23

Вы overthinking это. Вы можете указать порядок входов EditText прямо в XML, не делая ничего в Java.

Используйте параметр android:nextFocusDown, чтобы указать, в каком поле вы хотите получить фокус, когда пользователь нажимает клавишу ввода.

+0

Когда я попал не ввести ключ, ничего не происходит: user1462299

+5

Попробуйте 'android: nextFocusForward =" @ + id/editText2 "'. Также убедитесь, что это не многострочный EditText. – Sheharyar

+2

Я использовал как 'editText.setNextFocusDownId (R.id.editText1);' –

9
android:inputType="text" 
android:nextFocusDown="@+id/..." 

работал для меня

4

андроида: nextFocusDown работал отлично для меня Но удалили следующий метод только тогда свою работу:

editText1.setOnEditorActionListener(new EditText.OnEditorActionListener() { 

@Override 

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE || 
       actionId == EditorInfo.IME_ACTION_NEXT) { 
     editText2.requestFocus(); 
     return false; 
     } 

     return false; 
    } 
}); 
1

Кроме добавив + перед идентификатором:

android:inputType="text" 
android:nextFocusDown="@+id/..." 

I al поэтому пришлось добавить:

android:imeOptions="actionNext" 
Смежные вопросы