EditTextのいずれかに何かを入力する2つのEditTextを作成しようとしていますが、入力したテキストは他のEditTextに表示されます。Android:2つのEditTextに対して2つのaddTextChangedListenerを持つことはできませんか?
private EditText input_a;
private EditText input_b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
input_a = (EditText) findViewById(R.id.input_a);
input_b = (EditText) findViewById(R.id.input_b);
input_a.setOnFocusChangeListener(this);
input_b.setOnFocusChangeListener(this);
}
@Override
public void onFocusChange(View v,boolean hasFocus) {
// TODO Auto-generated method stub
if(v==input_a && hasFocus){
input_a.setText("");
input_b.setText("");
input_a.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
input_b.setText(input_a.getText());
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// TODO Auto-generated method stub
}
});
}else if(v==input_b && hasFocus){
input_b.setText("");
input_a.setText("");
input_b.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
input_a.setText(input_b.getText());
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
// TODO Auto-generated method stub
}
});
}
私はinput_aに入力するときに、それが正常に動作し、テキストI入力は、私がinput_bに入力するときただし、アプリケーションが予期せず終了し、input_bに示されています。私はなぜ2つのコードブロックが本当に似ているのかわかりませんが、そのうちの1つだけが動作します。
私はそれが無限ループのように見える一連のエラーメッセージを得た理由を説明していると思います。どうもありがとうございます!私は新しいTextChangedListenerを追加する前にremoveTextChangedListenerを試してみました。 – xiaoyao