Я работаю с Android TextWatcher для этого: когда пользователь печатает, сохраняет то, что набрал, и после сохранения изменяет символы внутри Edittext. например, у меня есть постоянный текст, такой как «привет, я счастлив», и все, что я набираю в edittext, пользователь видит, что этот текст пишет (эта строка отображается тандемно во время ввода пользователем)! но основной текст, который вводит пользователь, хранится в переменной . я использую этот код внутри afterTextChanged:
if(s.toString().charAt(s.length()-1) != 'a'){
//save inside freaktext variable(append)
freaktext=freaktext+s.toString().charAt(s.length()-1);
//change edittext value(what user see's)
txtfreak.setText(s.toString().substring(0, s.length()-1) + "a");
txtfreak.setSelection(txtfreak.getText().length());
}else{
freaktext=freaktext+"a";
}
В этом коде я говорю, что если введенный символ не является «a», сохраните его в переменной с именем «freaktext», а затем измените значение edittext и поместите символ «a» в конец строки внутри edittext. но если пользователь вводит «а», просто сохраните его в FreakText.
но моя проблема заключается в следующем: когда пользователь не вводит символ "a", все работает нормально, и мой код сохраняет введенный символ, а затем изменяет значение edittext, но когда значение edittext изменяется, весь код запускается снова, и потому что в последний раз я меняю его и помещаю " a" к нему, вторая часть моего кода (еще) запускается и снова сохраняет "a" в конец сохраненной строки. на самом деле, когда я набираю «q», я вижу «qa» в моей сохраненной строке! я хочу, чтобы пользователь прямо вводил «а» на клавиатуре, сохранял «а», а в других ситуациях — нет. на самом деле мой раздел else запускается только тогда, когда пользователь напрямую нажимает клавишу «a» на клавиатуре. как я могу это сделать? пожалуйста, помогите мне, этот код тратит мое время на 1 день