これを行うためにAndroidのTextWatcherを使用しています。ユーザーが入力したときに入力したものを保存し、保存後にEdittext内の文字を変更します。たとえば、「hi im happy」のような一定のテキストがあり、edittext ユーザーに入力するすべてのことは、このテキストが書かれていることがわかります (この文字列は、ユーザーの入力中に Tandemly を示します)! ただし、ユーザーが入力したメイン テキストは変数に格納されます。私は 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 内の文字列の末尾に配置します。ただし、ユーザーが「a」と入力すると、フリークテキストに保存されます。
私の問題は次のとおりです。ユーザーが「a」以外の文字を入力すると、すべてが正常に機能し、コードは入力された文字を保存してから edittext 値を変更しますが、edittext 値が変更されるとコード全体が再度実行され、最後に変更して「 a" を追加すると、コードの 2 番目の部分 (else) が実行され、保存された文字列の末尾に "a" が再度保存されます。実際、「q」と入力すると、保存した文字列に「qa」が表示されます!! ユーザーがキーボードで「a」を直接入力し、「a」が保存され、他の状況では保存されないようにしたい。私のelseセクションは、ユーザーがキーボードの「a」キーを直接押したときにのみ実行されます.どうすればこれを行うことができますか? 助けてください、このコードは私の時間を1日無駄にします