我正在尝试使用 TextWatcher 界面以检测更改了哪个 EditText。我有一个包含 10 个 EditText 的活动,并且为每个 EditText 使用 10 个 TextWatchers 看起来很奇怪。
有什么方法可以只使用一个 TextWatcher 并在函数 afterTextChanged 中的 Editable 上使用 switch 语句?
我正在尝试使用 TextWatcher 界面以检测更改了哪个 EditText。我有一个包含 10 个 EditText 的活动,并且为每个 EditText 使用 10 个 TextWatchers 看起来很奇怪。
有什么方法可以只使用一个 TextWatcher 并在函数 afterTextChanged 中的 Editable 上使用 switch 语句?
我以前从未尝试过,但如果你检查它是否EditText
在焦点上,它应该可以工作。有几种方法可以解决这个问题,最直接的一种是检查方法EditText
内部的焦点TextWatcher
。你需要做这样的事情:
if(mEdit1.hasFocus()) {
...
} else if(mEdit2.hasFocus()) {
...
} else if(mEdit3.hasFocus()) {
...
}
另一种方法是在根视图上使用OnGlobalFocusChangeListenerEditText
并设置一个变量来指示当前具有焦点。它仍然需要大量if
语句来检查哪个EditText
具有焦点,但可能是一个更可重用的解决方案。
我要做的是创建一个扩展EditText
并TextWatcher
在该类中创建的类。然后,您可以在 XML 中实现这些 EditText,或者在 Java 中通过TextWatcher
监听每个EditText
.
不知道这是否适合你,但你可以试一试。