EditText - zmień tekst podczas pisania

Podczas pisania muszę zastąpić tekst wewnątrz EditText: Przykład: jeśli użytkownik nacisnął „A”, zostanie zapisany w buforze, a na EditText zamiast niego pojawi się „D” (wygląda na to, że nacisnął „D”). Teraz mogę odczytać wciśnięty znak, ale nie mogę wyświetlić żadnego znaku w et, aby uniknąć przepełnienia stosu:

final EditText et = (EditText) findViewById(R.id.editTexts);
    final TextView tv = (TextView) findViewById(R.id.textView2);

    et.addTextChangedListener(new TextWatcher()
    {
            public void afterTextChanged(Editable s){}
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            } 
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if(s.length() > 0) {
                    tv.setText(s.toString().substring(s.length()-1));
                    et.setText("");
                }
            }
    });

questionAnswers(3)

yourAnswerToTheQuestion