EditText addTextChangedListenerがTextWatcherを繰り返し実行
1820 ワード
1.
2.
問題は上からではなく、テキストボックスの文字が変わったときです
EditText呼び出しを変更するのは上記の方法です
実行時
実はここで一回TextWatcherを実行しました!!!
もう一度実行した
次の点に注意してください.
dialEtBox.getText();StringではなくEditableオブジェクトを返します
このオブジェクトをtoString()してからappendコンテンツを!
これでいいです.
注意:EditTextの内容を文字列dialEtBoxに変換する.getText().dialEtBoxだけではなくtoString()getText(); ,このようにして返されるのはEditableオブジェクトで、このオブジェクトに対するappendはTextWatcherで受信されます!
dialEtBox.addTextChangedListener(new PhoneNumberWatcher());
2.
class PhoneNumberWatcher implements TextWatcher {
//
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
System.out.println("beforeTextChanged--"
+ dialEtBox.getText().toString());
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
System.out.println("onTextChanged--"
+ dialEtBox.getText().toString());
}
public void afterTextChanged(Editable s) {
System.out.println("afterTextChanged--"
+ dialEtBox.getText().toString());
}
}
問題は上からではなく、テキストボックスの文字が変わったときです
public void updateEditText(String inputNumber)
{
String newNumber = dialEtBox.getText().append(inputNumber).toString();// !
dialEtBox.setText(newNumber);
}
EditText呼び出しを変更するのは上記の方法です
実行時
dialEtBox.getText().append(inputNumber)
実はここで一回TextWatcherを実行しました!!!
dialEtBox.setText(newNumber);
もう一度実行した
次の点に注意してください.
dialEtBox.getText();StringではなくEditableオブジェクトを返します
このオブジェクトをtoString()してからappendコンテンツを!
これでいいです.
String newNumber =new StringBuilder(dialEtBox.getText().toString()).append(inputNumber).toString();
注意:EditTextの内容を文字列dialEtBoxに変換する.getText().dialEtBoxだけではなくtoString()getText(); ,このようにして返されるのはEditableオブジェクトで、このオブジェクトに対するappendはTextWatcherで受信されます!