Android中的onTextChanged事件

时间:2015-02-09 17:22:21

标签: java android android-activity android-edittext android-button

我的问题很纠结,我必须使用EditText框。现在,当我在第一个EditText上输入内容时,它会显示在第二个EditText上。反之亦然,在第二个EditText上键入时,它在第一个EditText上设置。但是它给EditText中任何一个的setText带来了一些错误。以下是我的代码,

Boolean flag,flag2;
txt_editText_1.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,int count, int after) {}
@Override    
public void onTextChanged(CharSequence s, int start,int before, int count)
{
if(s.length() != 0)
{
flag=true;
flag2=false;
if(flag==true)
{
String result=txt_editText_1.getText().toString().trim();
txt_editText_2.setText(""+result);
}
}
}
});

txt_editText_2.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,int count, int after) {}
@Override    
public void onTextChanged(CharSequence s, int start,int before, int count)
{
if(s.length() != 0)
{
flag=false;
flag2=true;
if(flag2==true)
{
String result=txt_editText_2.getText().toString().trim();
txt_editText_1.setText(""+result);
}
}
}
});

但它不起作用。所以,任何人都可以提出建议。

1 个答案:

答案 0 :(得分:0)

我找到了答案。我在EditText上放置了触摸事件以保持标志(布尔)状态。

Boolean flag,flag2;
txt_editText_1.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(MotionEvent.ACTION_UP == event.getAction()) 
{
flag=true;
flag2=false;
return true;
}
}
});

txt_editText_2.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(MotionEvent.ACTION_UP == event.getAction()) 
{
flag=false;
flag2=true;
return true;
}
}
});

txt_editText_1.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,int count, int after) {}
@Override    
public void onTextChanged(CharSequence s, int start,int before, int count)
{
if(s.length() != 0)
{
if(flag==true)
{
String result=txt_editText_1.getText().toString().trim();
txt_editText_2.setText(""+result);
}
}
}
});

txt_editText_2.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,int count, int after) {}
@Override    
public void onTextChanged(CharSequence s, int start,int before, int count)
{
if(s.length() != 0)
{
if(flag2==true)
{
String result=txt_editText_2.getText().toString().trim();
txt_editText_1.setText(""+result);
}
}
}
});