EditText auslesen fehlerhaft

  • 3 Antworten
  • Letztes Antwortdatum
M

masterjule

Fortgeschrittenes Mitglied
50
Hallo,

ich entwickel gerade meine erste kleine App und hab ein, für mich, unerklärliches Problem beim auslesen eines EditText Feldes.

Ich lese den Text aus, aber wenn weniger als zwei Wörter in dem Feld stehen wird das letzte Wort einfach verdoppelt.
Es steht da zum Beispiel "Hallo Leute", dass bekomme ich "Hallo LeuteLeute"

Code:
EditText editText = (EditText) getActivity().findViewById(R.id.editText_Note_Text);
Log.v(TAG, "EditText: " + editText.getText().toString());
Den Code habe ich in der onSaveInstanceState meines Fragments.

In der Activity habe ich eine Speichern Methode, bei der ich auch das Textfeld auslese und da funktioniert es wie erwartet.

Hoffentlich kann mir hier jemand helfen, bin schon regelrecht am verzweifeln...

Gruß
Julian
 
Das ist ein bekannter Android-OS-Bug. Du kannst dafür nicht viel. Das kann man bspw. in der SMS-App von Android auch reproduzieren (Neue SMS -> Nachrichtentext eingeben -> Handy rotieren -> Doppelter Text).


Ein blöder Workaround (kenne keinen anderen) ist, das EditText-Feld mit android:inputType="textNoSuggestions" zu versehen. Ist nicht immer zielführend, weil man ja die Korrektur nicht immer unterbinden will. Vielleicht hat ja jemand einen besseren Workaround ;)
 
Danke reneph!! :thumbup:
Jetzt weiß ich wenigstens, dass ich nix übersehen habe.

Stimmt, ist nicht der Workaround, aber jetzt erstmal besser als nix.
Also, wenn jemand noch was weiß oder eine Idee hat..
 
Hi,
mein Ansatz wäre, herauszufinden welches OS-Versionen dies betrifft.
Dann sich versichern, dass das Problem nur wie oben beschrieben auftritt.
Dann bei den betreffenden OS-Versionen die anzahl der Wörter zählen.

z.B. mit:
Code:
String text = editText.getText().toString();
String[] splits = text.split(" ");
int numberOfWords = splits.length;
Aber ich glaube EditText hat auch eine Wortzählfunktion.

Wenn die Anzahl also <= 2:
Das letzte Wort auf der Hälfte splitten und überprüfen ob die Wörter gleich sind. Wenn dies der Fall ist, den letzten Teil einfach abschneiden.

Code:
String lastWord = splits[splits.length-1];
int halfLastWordLength = lastWord.length / 2;
String wordPart1 = lastWord.subString(0, halfLastWordLength);
String wordPart2 = lastWord.subString(halfLastWordLength - 1, lastWord.length);
if(wordPart1.equals(wordPart2)) {
    text = text.subString(0, text.length - halfLastWordLength);
}
 
Zurück
Oben Unten