Focus auf EditText setzen
Hallo zusammen!
Ich habe ein Problem, von dem ich hoffe, dass ihr mir weiterhelfen könnt.
In einer Activity sind sechs Textfelder (EditText) definiert.
Sechzehn Buttons dienen dazu, etwas in diese Felder einzugeben (die virtuelle Tastatur habe ich abgeschaltet durch (myEditText.setInputType(InputType.TYPE_NULL)).
Nun möchte ich Android dazu bewegen zum nächsten EditText zu springen, wenn ein Butto gedrückt wurde.
Dazu habe ich eine Methode onButtonClick eingerichtet:
Code:
public void onButtonClick(View v) { String wert = ""; switch (v.getId()) { case R.id.reihe1_X: { wert = "X"; break; } case R.id.reihe1_10: { wert = "10"; break; } case R.id.reihe1_9: { wert = "9"; break; } case R.id.reihe1_8: { wert = "8"; break; } case R.id.reihe2s_7: { wert = "7"; break; } case R.id.reihe2n_7: { wert = "7"; break; } case R.id.reihe2s_6: { wert = "6"; break; } case R.id.reihe2s_M: { wert = "M"; break; } case R.id.reihe2n_6: { wert = "6"; break; } case R.id.reihe2n_5: { wert = "5"; break; } case R.id.reihe2n_4: { wert = "4"; break; } case R.id.reihe3_3: { wert = "3"; break; } case R.id.reihe3_2: { wert = "2"; break; } case R.id.reihe3_1: { wert = "1"; break; } case R.id.reihe3_M: { wert = "M"; break; } case R.id.reihe4_Clear: { wert = ""; break; } } if (findViewById(R.id.wert1).hasFocus()) { ((EditText) findViewById(R.id.wert1)).setText(wert); ((EditText) findViewById(R.id.wert2)).requestFocus(); } if (findViewById(R.id.wert2).hasFocus()) { ((EditText) findViewById(R.id.wert2)).setText(wert); ((EditText) findViewById(R.id.wert3)).requestFocus(); } if (findViewById(R.id.wert3).hasFocus()) { ((EditText) findViewById(R.id.wert3)).setText(wert); ((EditText) findViewById(R.id.wert4)).requestFocus(); } if (findViewById(R.id.wert4).hasFocus()) { ((EditText) findViewById(R.id.wert4)).setText(wert); ((EditText) findViewById(R.id.wert5)).requestFocus(); } if (findViewById(R.id.wert5).hasFocus()) { ((EditText) findViewById(R.id.wert5)).setText(wert); ((EditText) findViewById(R.id.wert6)).requestFocus(); } if (findViewById(R.id.wert6).hasFocus()) { ((EditText) findViewById(R.id.wert6)).setText(wert); ((EditText) findViewById(R.id.wert6)).requestFocus(); } }
Das funktioniert aber so nicht. Wenn ich ein Wert in ein Feld (per Button) eingebe, erscheint dieser Wert zeitgleich in den übrigen 5 Felder und der Fokus wechselt nicht. Was mache ich falsch? Hat jemand eine Idee?
Vielen Dank im Voraus!
Grossi
P.S.: Wenn ich das requestFocus() weglasse, wird der Wert in das richtige Feld eingetragen.
Ich muss dann nur per Hand zwischen den Feldern wechseln.
AW: Focus auf EditText setzen
spontan würde ich sagen, du musst die if-Anweisungen schachteln, denn was passiert?
In der 1. if-Anweisung setzt du den Wert und setzt den focus auf [FONT=Courier New]R.id.wert2[/FONT]
Jetzt wird die nächste if-Anweisung ausgeführt wenn der Focus auf R.id.wert2 sitz. Und genau das ist ja der Fall, denn Du hast es eben in der Anweisung vorher gesetzt :-)
Egal in welchen Zustand du einspringst in Deine if-Konstruktion: Das Spielchen geht immer weiter bis der Focus auf R.id.wert6 ist.
AW: Focus auf EditText setzen
Zitat:
Zitat von
Äppler
spontan würde ich sagen, du musst die if-Anweisungen schachteln, denn was passiert?
In der 1. if-Anweisung setzt du den Wert und setzt den focus auf [FONT=Courier New]R.id.wert2[/FONT]
Jetzt wird die nächste if-Anweisung ausgeführt wenn der Focus auf R.id.wert2 sitz. Und genau das ist ja der Fall, denn Du hast es eben in der Anweisung vorher gesetzt :-)
Egal in welchen Zustand du einspringst in Deine if-Konstruktion: Das Spielchen geht immer weiter bis der Focus auf R.id.wert6 ist.
Hallo Äppler,
genau das war das Problem - hätte man auch selbst drauf kommen können.
Vielen Dank!
Grossi