2009-11-25 14 views
8

Estoy escribiendo una aplicación de calculadora simple (usando diseño absoluto con 3 cuadros de edición y algunos botones), que tiene dos cuadros de texto de entrada y un cuadro de salida.Mover el foco de un cuadro de texto Editar a otro

input1 = (EditText) findViewById(R.id.input1); 
input2 = (EditText) findViewById(R.id.input2); 

ahora una vez usuario introduce algunos valores numéricos en INPUT1 y prensas '+', ahora quiero cambiar el enfoque de INPUT1 a INPUT2. ¿Cómo puedo hacer eso?

He probado el código de abajo al pulsar las teclas de '+'

onClick(View arg0){ 
    operator.setText("+"); 

    //Move focus from input1 to input2 
    input1.clearFocus(); 
    input2.setNextFocusDownId(input2.getId()); 
} 

pero esto no está funcionando .. puede usted por favor me ayude en esto?

+2

bueno, encontré la respuesta, simplemente podemos llamar al input2.requestfocus(); para cambiar el foucus. – Vamsi

+0

¿Qué pasa si necesita usar esto en TextWatcher, y necesita generalizarlo, lo que significa que no debe usar un objeto específico para llamar a requestFocus(); ¿Tiene la respuesta para eso? – antonio081014

Respuesta

24

Bien, encontré la respuesta: simplemente podemos llamar al input2.requestFocus(); para cambiar el enfoque.

0

[Por cierto, que desea evitar el uso de AbsoluteLayout -. Que está obsoleta, y puede ser removido]

En lugar de utilizar onclick, desea que la acción ocurra en el método onKeyDown de un KeyListener.

Ver: setKeyListener

A continuación, se puede examinar la tecla KeyEvent 's con

KeyEvent.getAction() == KeyEvent.KEYCODE_PLUS 
2

Prueba esto:

input1.setNextFocusDownId(input2.getId());

que está utilizando INPUT2, y supongo que usted quiero pasar de input1 a input2.

Cuestiones relacionadas