2011-09-30 7 views
14

Quiero hacer algunas cosas en el teclado virtual presionar la tecla presionar. Ver mi código y salida a continuación. Se ejecuta dos veces, pero quiero que se ejecute solo una vez. ¿Como arreglarlo?Teclado programable Entrar el identificador del evento clave

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    txt = (EditText)findViewById(R.id.txt); 
    txt.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_ENTER) { 
       Log.e("test","--------- on enter"); 
       return false; 
      } 
      return false; 
     } 
    }); 
} 

This is my output for this

Respuesta

19

la mejor manera posible:

if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { 
    Log.d(TAG, "enter_key_called"); 
} 
+2

probablemente debería ir para ACTION_UP lugar, por lo que el usuario puede cancelar el evento retirar mi dedo él o de ella? Y agrega KeyEvent.KEYCODE_DPAD_CENTER para esos. – Kenneth

+0

https://developer.android.com/reference/android/view/View.OnKeyListener.html: 'Llamado cuando se envía una clave de hardware a una vista. Esto no funcionará para el teclado virtual. – mbonnin

+0

configuración inputType = "text" en la vista EditText, hace que funcione para mí para el teclado virtual – SammyT

Cuestiones relacionadas