Android 在后文本更改事件中获取可编辑id
我有一个活动扩展TextWatcher以检测某些EditText中的更改,因此它实现:Android 在后文本更改事件中获取可编辑id,android,events,text,Android,Events,Text,我有一个活动扩展TextWatcher以检测某些EditText中的更改,因此它实现: public void afterTextChanged(Editable s) 我的问题是:如果有多个EditText具有.addTextChangedListener(此)集,在后文本更改过程中,如果给定可编辑对象,我如何区分哪一个已更改?请参见基本上创建您自己的类,以使用构造函数处理侦听器,该构造函数定义您监视的edittext并传递您分配的edittext。另一个选项,匿名内部类更少,只需检查当前关
public void afterTextChanged(Editable s)
我的问题是:如果有多个EditText具有.addTextChangedListener(此)集,在后文本更改过程中,如果给定可编辑对象,我如何区分哪一个已更改?请参见基本上创建您自己的类,以使用构造函数处理侦听器,该构造函数定义您监视的edittext并传递您分配的edittext。另一个选项,匿名内部类更少,只需检查当前关注的
视图
如果您的TextWatcher
应用程序仅依赖于用户在键入时所做的更改,则更改将始终发生在具有当前焦点的视图中。从活动
或窗口
内的任何位置调用getCurrentFocus()
,将返回用户关注的视图。从TextWatcher
内部来看,这几乎肯定是特定的EditText
实例
希望有帮助 有一种方法可以实现这一点,而无需为每个EditText
创建TextWatcher
对象,但我不会使用它:
protected void onCreate(Bundle savedInstanceState) {
// initialization...
EditText edit1 = findViewById(R.id.edit1);
edit1.addTextChangedListener(this);
EditText edit2 = findViewById(R.id.edit1);
edit2.addTextChangedListener(this);
}
private static CharSequence makeInitialString(EditText edit) {
SpannableStringBuilder builder = new SpannableStringBuilder();
builder.setSpan(edit, 0, 0, Spanned.SPAN_MARK_MARK);
return builder;
}
public void afterTextChanged(Editable s) {
EditText[] edits = s.getSpans( 0, s.length(), EditText.class );
if (edits.length != 1) {
// this mustn't happen
}
// here's changed EditText
EditText edit = edits[0];
}