Focus auf EditText setzen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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:

    Java-Quellcode

    1. public void onButtonClick(View v) {
    2. String wert = "";
    3. switch (v.getId()) {
    4. case R.id.reihe1_X: { wert = "X"; break; }
    5. case R.id.reihe1_10: { wert = "10"; break; }
    6. case R.id.reihe1_9: { wert = "9"; break; }
    7. case R.id.reihe1_8: { wert = "8"; break; }
    8. case R.id.reihe2s_7: { wert = "7"; break; }
    9. case R.id.reihe2n_7: { wert = "7"; break; }
    10. case R.id.reihe2s_6: { wert = "6"; break; }
    11. case R.id.reihe2s_M: { wert = "M"; break; }
    12. case R.id.reihe2n_6: { wert = "6"; break; }
    13. case R.id.reihe2n_5: { wert = "5"; break; }
    14. case R.id.reihe2n_4: { wert = "4"; break; }
    15. case R.id.reihe3_3: { wert = "3"; break; }
    16. case R.id.reihe3_2: { wert = "2"; break; }
    17. case R.id.reihe3_1: { wert = "1"; break; }
    18. case R.id.reihe3_M: { wert = "M"; break; }
    19. case R.id.reihe4_Clear: { wert = ""; break; }
    20. }
    21. if (findViewById(R.id.wert1).hasFocus()) {
    22. ((EditText) findViewById(R.id.wert1)).setText(wert);
    23. ((EditText) findViewById(R.id.wert2)).requestFocus();
    24. }
    25. if (findViewById(R.id.wert2).hasFocus()) {
    26. ((EditText) findViewById(R.id.wert2)).setText(wert);
    27. ((EditText) findViewById(R.id.wert3)).requestFocus();
    28. }
    29. if (findViewById(R.id.wert3).hasFocus()) {
    30. ((EditText) findViewById(R.id.wert3)).setText(wert);
    31. ((EditText) findViewById(R.id.wert4)).requestFocus();
    32. }
    33. if (findViewById(R.id.wert4).hasFocus()) {
    34. ((EditText) findViewById(R.id.wert4)).setText(wert);
    35. ((EditText) findViewById(R.id.wert5)).requestFocus();
    36. }
    37. if (findViewById(R.id.wert5).hasFocus()) {
    38. ((EditText) findViewById(R.id.wert5)).setText(wert);
    39. ((EditText) findViewById(R.id.wert6)).requestFocus();
    40. }
    41. if (findViewById(R.id.wert6).hasFocus()) {
    42. ((EditText) findViewById(R.id.wert6)).setText(wert);
    43. ((EditText) findViewById(R.id.wert6)).requestFocus();
    44. }
    45. }
    Alles anzeigen


    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
  • vermutlich einfacher fehler,
    wenn du requestfocus einsetzt wird der focus dem nächsten übergeben und damit ist die nächste if anweisung wieder wahr, dort wird wieder der wert eingetragen und der focus geht zum nächsten und immer so weiter.
    Abhilfe sollte da schaffen indem du die ifs durch else ifs ersetzt also so

    Quellcode

    1. public void onButtonClick(View v) {
    2. String wert = "";
    3. switch (v.getId()) {
    4. case R.id.reihe1_X: { wert = "X"; break; }
    5. case R.id.reihe1_10: { wert = "10"; break; }
    6. case R.id.reihe1_9: { wert = "9"; break; }
    7. case R.id.reihe1_8: { wert = "8"; break; }
    8. case R.id.reihe2s_7: { wert = "7"; break; }
    9. case R.id.reihe2n_7: { wert = "7"; break; }
    10. case R.id.reihe2s_6: { wert = "6"; break; }
    11. case R.id.reihe2s_M: { wert = "M"; break; }
    12. case R.id.reihe2n_6: { wert = "6"; break; }
    13. case R.id.reihe2n_5: { wert = "5"; break; }
    14. case R.id.reihe2n_4: { wert = "4"; break; }
    15. case R.id.reihe3_3: { wert = "3"; break; }
    16. case R.id.reihe3_2: { wert = "2"; break; }
    17. case R.id.reihe3_1: { wert = "1"; break; }
    18. case R.id.reihe3_M: { wert = "M"; break; }
    19. case R.id.reihe4_Clear: { wert = ""; break; }
    20. }
    21. if (findViewById(R.id.wert1).hasFocus()) {
    22. ((EditText) findViewById(R.id.wert1)).setText(wert);
    23. ((EditText) findViewById(R.id.wert2)).requestFocus();
    24. }
    25. else if (findViewById(R.id.wert2).hasFocus()) {
    26. ((EditText) findViewById(R.id.wert2)).setText(wert);
    27. ((EditText) findViewById(R.id.wert3)).requestFocus();
    28. }
    29. else if (findViewById(R.id.wert3).hasFocus()) {
    30. ((EditText) findViewById(R.id.wert3)).setText(wert);
    31. ((EditText) findViewById(R.id.wert4)).requestFocus();
    32. }
    33. else if (findViewById(R.id.wert4).hasFocus()) {
    34. ((EditText) findViewById(R.id.wert4)).setText(wert);
    35. ((EditText) findViewById(R.id.wert5)).requestFocus();
    36. }
    37. else if (findViewById(R.id.wert5).hasFocus()) {
    38. ((EditText) findViewById(R.id.wert5)).setText(wert);
    39. ((EditText) findViewById(R.id.wert6)).requestFocus();
    40. }
    41. else if (findViewById(R.id.wert6).hasFocus()) {
    42. ((EditText) findViewById(R.id.wert6)).setText(wert);
    43. ((EditText) findViewById(R.id.wert6)).requestFocus();
    44. }
    45. }
    Alles anzeigen