2011-04-15 20 views
44

Si tengo un EditText y quiero escuchar si el usuario presiona el botón "done" en el teclado ... ¿cómo podría hacerlo?¿Escucha el botón Hecho en EditText?

+0

punto a considerar, el teléfono podría tener un teclado físico, por lo que el usuario podría no presione el botón de hecho en el teclado, ¿ha pensado en realizar su operación en función de la pérdida de enfoque o de la edición de edición de texto? – blindstuff

Respuesta

72

Código es

final EditText edittext = (EditText) findViewById(R.id.edittext); 
edittext.setOnKeyListener(new View.OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
       return true; 
      } 
      return false; 
     } 
    }); 

En ese 'EditarTexto' es id del campo de texto

Salida este enlace Simply set setOnKeyListener to your editText

+5

Hola Dinash. Solo publicar un enlace generalmente no es útil. Es mejor proporcionar algún código de muestra que responda a la pregunta de los consultantes y luego vincular al artículo fuente como referencia o para una lectura posterior. –

+0

Hola Chris, creo que puedes encontrar la respuesta desde ese enlace en sí, pero aún así ofrezco un código de trabajo exacto disponible en el enlace en sí ... El código es final EditText edittext = (EditText) findViewById (R.id.edittext); edittext.setOnKeyListener (new OnKeyListener() {public boolean onKey (Ver v, int claveCódigo, evento KeyEvent) {if ((event.getAction() == KeyEvent.ACTION_DOWN) && (claveCódigo == KeyEvent.KEYCODE_ENTER)) { Toast.makeText (HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT) .show(); return true;} return false;}}); Espero que pueda encontrarlo útil ... En ese 'edittext' es id del campo de texto – Dinash

+0

Samsung s4 no funciona este enfoque –

59

Dinash respuesta es agradable, pero no funciona en todos los dispositivos. A continuación código funciona bien para todos los dispositivos

edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
     return false; 
    } 
}); 
+0

Este funciona perfectamente –

+1

esto debe aceptarse respuesta - es el que funciona en Samsung s4 –

+0

Adición: El etiqueta xml "android: imeOptions =" ​​actionDone "" debe establecerse en EditText en cuestión. Funciona muy bien, ¡gracias! – jwehrle

1

El same Jone respuesta, pero con lambda reemplazado:

etPointCombatFirst.setOnEditorActionListener((v, actionId, event) -> { 
       if (actionId == EditorInfo.IME_ACTION_DONE) { 
        Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show(); 
        return true; 
       } 
       return false; 
      }); 
Cuestiones relacionadas