2011-09-28 17 views
51

Tengo un EditText. Quiero que después de escribir algo de texto, cuando el usuario presiona la tecla Listo de la tecla suavebard, se realice una operación de búsqueda que también he implementado en un evento de clic de botón. Como hacer eso...???android: acción del teclado de pantalla cuando se presiona la tecla Listo

+0

Mejor manera con Kotlin en este comentario: https://stackoverflow.com/a/48810268/1912924 –

Respuesta

139

probar este

editText.setOnEditorActionListener(new OnEditorActionListener() {   
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if(actionId==EditorInfo.IME_ACTION_DONE){ 
      //do something 
     } 
    return false; 
    } 
}); 
+1

Gracias, funcionó ... –

15

probar este

Funciona tanto para HECHO y RETORNO.

EditText editText= (EditText) findViewById(R.id.editText); 
editText.setOnEditorActionListener(new EditText.OnEditorActionListener() { 

       @Override 
       public boolean onEditorAction(TextView v, int actionId, 
         KeyEvent event) { 
        if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER 
          || actionId == EditorInfo.IME_ACTION_DONE) { 
         // Do your action 
         return true; 
        } 
        return false; 
       } 
      }); 
0

Detecta el KeyEvent y luego verifica su código de clave. FLAG_EDITOR_ACTION se utiliza para identificar la tecla de entrada que vienen de un IME cuya tecla enter se ha auto-etiquetado "siguiente" o "hecho"

if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION) 
    //your code here 

Encuentra los documentos here.

Segundo método

myEditText.setOnEditorActionListener(new OnEditorActionListener() { 
@Override 
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { 
    int result = actionId & EditorInfo.IME_MASK_ACTION; 
    switch(result) { 
    case EditorInfo.IME_ACTION_DONE: 
     // done stuff 
     break; 
    case EditorInfo.IME_ACTION_NEXT: 
     // next stuff 
     break; 
    } 
} 
}); 
0

Prueba este

Esto funciona tanto en condición de si el teclado está mostrando escriba inicio de sesión o la siguiente muestra de la flecha

YourEdittextName.setOnEditorActionListener(new TextView.OnEditorActionListener() 
    { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
     { 
      if(actionId== EditorInfo.IME_ACTION_DONE||actionId==EditorInfo.IME_ACTION_NEXT) 
      { 
       //Perform Action here 
      } 
      return false; 
     } 
    }); 

si ur frente línea roja entonces haz esto ... importa Keyevent y EditorInfo presionando alt + enter entonces todos los errores lo eliminarán correctamente .......

Cuestiones relacionadas