EditText-Feld stürzt beim ersten Buchstaben löschen ab

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

  • EditText-Feld stürzt beim ersten Buchstaben löschen ab

    hallo,
    ich habe ein EditText feld zur eingabe und etwas zu suchen...

    Quellcode

    1. editText.addTextChangedListener(new TextWatcher() {
    2. @Override
    3. public void onTextChanged(CharSequence s, int start, int before, int count) {
    4. }
    5. @Override
    6. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    7. }
    8. @Override
    9. public void afterTextChanged(Editable s) {
    10. String[] werte = getResources().getStringArray(R.array.routen_Kalymnos);
    11. ... hier kommt, was alles passiert...
    12. }
    13. });
    Alles anzeigen
    es geht soweit, nur wenn ich auf eingabemaske den zurück-button drücke und ihn beim ersten buchstaben versehentlich nochmal drücke, stürzt die app ab.
    wie kann ich verhindern, dass zb. wenn nur ein buchstabe also der erste meines zu suchenden wortes noch steht, der zurück-button nicht mehr bedient werden kann?

    danke für antworten
    tino
  • Hallo

    du benutzt ja schon richtiger weise den Textwatcher. Nur die falsche Methode.
    Dafür ist die public void beforeTextChanged(CharSequence s, int start, int count, int after) besser geeignet.
    Die wird bei jeden Tasten Druck aufgerufen
    In s ist der String bevor die Taste gedrückt wurde. Also auch bei start 0, count 1, after 0 wenn du genau darauf reagierst und dir das Zeichen was in s ist merkst wirst du weiter kommen.

    Nicht umsonst werden dir alle drei Methoden zur Verfügung gestellt.
    Dann machedir ein Log in jede Methode und teste was da passiert.


    Java-Quellcode

    1. ed.addTextChangedListener(new TextWatcher() {
    2. String st ="";
    3. @Override
    4. public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    5. Log.i("test","bevor: "+s+ " start:"+start+ " count:"+count+ " after:"+after);
    6. if(start==0 & count==1 & after==0){
    7. st=s.toString();
    8. }
    9. }
    10. @Override
    11. public void onTextChanged(CharSequence s, int start, int before, int count) {
    12. Log.i("test","Changed: "+s+ " start:"+start+ " before:"+before+ " count:"+count);
    13. }
    14. @Override
    15. public void afterTextChanged(Editable s) {
    16. Log.i("test","After: "+s);
    17. }
    18. });
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P
  • hallo,

    danke bin gerade erst wieder zum testen gekommen,
    ich glaube, ich habe nur vergessen, nur dann abzufragen wenn mind. ein buchstabe drin steht.
    ich verwende ja das char[0] und wenn ich beim ersten buchstaben nochmal auf zurück gehe, gibt es kein char[0], das habe ich nicht abgefangen.

    jetzt geht es,
    danke Tino