私のアプリケーションでは、TextWatcher を EditText に配置しました。EditText のテキストを変更すると、TextWatcher のイベントが 2 回呼び出されます。
アプリの実行にエミュレーターを使用しています。
私のアプリケーションでは、TextWatcher を EditText に配置しました。EditText のテキストを変更すると、TextWatcher のイベントが 2 回呼び出されます。
アプリの実行にエミュレーターを使用しています。
あなたのコードはどのように見えますか? これが TextWatcher の通常の動作です。例:
myInput.addTextChangedListener(new TextWatcher() {
boolean mToggle = false;
public void onTextChanged(CharSequence cs, int s, int b, int c) {}
public void afterTextChanged(Editable editable) {
if (mToggle) {
Toast.makeText(getBaseContext(), "HIT KEY",Toast.LENGTH_LONG).show();
}
mToggle = !mToggle;
}
public void beforeTextChanged(CharSequence cs, int i, int j, int k) {}
});
リスナー内 (editText.setText("string")
メソッド内など) で呼び出した場合、 は新しいテキストの変更を検出し、再度呼び出してループを作成する可能性があります。TextWatcher
afterTextChanged
TextWatcher
setText
代替手段editText.setText("string")
は次のとおりです。
editText.getText().clear();
editText.append("string");
TextWatcher
リスナーによる新しい検出を呼び起こすことはありません。