2012-06-21 18 views
13

Tengo un diseño con dos editexts. Necesito configurar el segundo enfocado y editable cuando se toca la tecla enter en el primero. Tengo el código para establecer el foco, pero I no puedo comenzar a escribir cuando el segundo se enfoca.Establecer el siguiente EditText enfocado y editable en KEY_DOWN

PD También necesito que el texto de edición tenga exactamente una altura de línea sin posibilidad de hacer filas adicionales. Funciona bien. pss androide código de 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"> 

código 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", quite "+" de la identificación. Intente de nuevo, hágamelo saber, pase ... – user370305

+0

dice que no puede encontrar un recurso. ¿Puede publicar un código de muestra con las condiciones que mencioné anteriormente? – user1462299

+0

Su código funciona bien en mi caso .. – user370305

Respuesta

2

Parece que tiene errores al ejecutar este código en el emulador. Sin embargo, funciona en los teléfonos

23

Estás overthinking esto. Puede especificar el orden de las entradas EditText directamente en el XML sin hacer nada en Java.

Utilice el parámetro android:nextFocusDown para especificar en qué campo desea enfocar cuando el usuario pulsa la tecla Intro.

+0

Cuando llegué a entrar en nada sucede clave: user1462299

+5

Pruebe 'android: nextFocusForward =" @ + id/editText2 "'. También asegúrese de que no es un EditText de varias líneas. – Sheharyar

+2

he usado como 'editText.setNextFocusDownId (R.id.editText1);' –

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

trabajado para mí

4

androide: nextFocusDown funcionó bien para mí Pero removido el método siguiente sólo entonces su trabajo:

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

Además de añadir el + delante de la identificación:

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

I al así que tuve que agregar:

android:imeOptions="actionNext" 
Cuestiones relacionadas