2009-11-25 1 views
8

Sto scrivendo una semplice applicazione per la calcolatrice (utilizzando il layout assoluto con 3 caselle di modifica e alcuni pulsanti), che ha due caselle di testo di input e una casella di output.Sposta lo stato attivo da una casella di testo Modifica a un'altra

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

ora volta che l'utente entra in alcuni numerici input1 e presse '+', ora voglio spostare l'attenzione da input1 a Input2. Come lo posso fare?

Ho provato il codice qui sotto sulla pressione del tasto di '+'

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

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

ma questo non funziona .. si può please help me su questo?

+2

beh, ho trovato la risposta, possiamo semplicemente chiamare input2.requestfocus(); per cambiare il foucus. – Vamsi

+0

Cosa fare se è necessario utilizzarlo in TextWatcher ed è necessario generalizzarlo, il che significa che non è necessario utilizzare oggetti specifici per chiamare requestFocus(); Avete la risposta per questo? – antonio081014

risposta

24

Bene, ho trovato la risposta: possiamo semplicemente chiamare input2.requestFocus(); per cambiare il focus.

0

[A proposito, si vuole evitare di utilizzare AbsoluteLayout -. È deprecato, e possono essere rimossi]

Invece di usare onClick, si desidera che l'azione avvenga in modo onKeyDown di un KeyListener.

See: setKeyListener

Quindi è possibile esaminare tasto s' il KeyEvent con

KeyEvent.getAction() == KeyEvent.KEYCODE_PLUS 
2

Prova questo:

input1.setNextFocusDownId(input2.getId());

si utilizza input2, e immagino che tu voglio andare da input1 a input2.