用于多个EditText的TextWatcher

我想为多个EditText字段实现TextWatcher接口。目前我正在使用:

text1.addTextChangedListener(此);
text2.addTextChangedListener(此);

然后重写“我的活动”中的方法:

公共无效后文本更改(可编辑的s){
public void beforeTextChanged(字符序列s、int start、int count、int after){}
public void onTextChanged(字符序列、int start、int before、int count)
{
//对text1字段的文本执行一些操作
//对text2字段的文本执行一些操作
}

不过,这很好,但我正在寻找其他方法,以便明确识别编辑文本字段中当前关注的软键盘

@Sebastian Roth的答案中建议的解决方案并不是针对某些editTextTextWatcher实例。对于neditText,它是一个类和该类的n个实例

每个EditText都有自己的SpanableTextWatcher的事件将此span设置为s参数。我检查它们的哈希代码(每个对象的唯一Id)。myEditText1.getText()返回该Spannable。因此,如果myEditText1.getText().hashCode()等于s.hashCode(),则表示s属于myEditText1

因此,如果您想为某些editText创建一个TextWatcher实例,您应该使用:

私有TextWatcher generalTextWatcher=new TextWatcher(){
@凌驾
public void onTextChanged(字符序列,int start,int before,
整数计数){
if(myEditText1.getText().hashCode()==s.hashCode())
{
myEditText1\u onTextChanged(s、开始、之前、计数);
}
else if(myEditText2.getText().hashCode()==s.hashCode())
{
myEditText2_onTextChanged(s,开始,之前,计数);
}
}
@凌驾
更改前的公共无效(字符序列、整数开始、整数计数、,
整数后){
if(myEditText1.getText().hashCode()==s.hashCode())
{
myEditText1\u更改前文本(s、开始、计数、之后);
}
else if(myEditText2.getText().hashCode()==s.hashCode())
{
myEditText2\u更改前文本(s、开始、计数、之后);
}
}
@凌驾
公共无效后文本已更改(可编辑){
if(myEditText1.getText().hashCode()==s.hashCode())
{
myEditText1_后文本更改;
}
else if(myEditText2.getText().hashCode()==s.hashCode())
{
myEditText2_后文本更改;
}
}
};

myEditText1.addTextChangedListener(generalTextWatcher);
myEditText2.addTextChangedListener(generalTextWatcher);

发表评论