0

我正在尝试使用 TextWatcher 界面以检测更改了哪个 EditText。我有一个包含 10 个 EditText 的活动,并且为每个 EditText 使用 10 个 TextWatchers 看起来很奇怪。

有什么方法可以只使用一个 TextWatcher 并在函数 afterTextChanged 中的 Editable 上使用 switch 语句?

4

2 回答 2

0

我以前从未尝试过,但如果你检查它是否EditText在焦点上,它应该可以工作。有几种方法可以解决这个问题,最直接的一种是检查方法EditText内部的焦点TextWatcher。你需要做这样的事情:

if(mEdit1.hasFocus()) {
  ...
} else if(mEdit2.hasFocus()) {
  ...
} else if(mEdit3.hasFocus()) {
  ...
}

另一种方法是在根视图上使用OnGlobalFocusChangeListenerEditText并设置一个变量来指示当前具有焦点。它仍然需要大量if语句来检查哪个EditText具有焦点,但可能是一个更可重用的解决方案。

于 2013-03-06T16:17:44.917 回答
0

我要做的是创建一个扩展EditTextTextWatcher在该类中创建的类。然后,您可以在 XML 中实现这些 EditText,或者在 Java 中通过TextWatcher监听每个EditText.

不知道这是否适合你,但你可以试一试。

于 2013-03-06T16:16:07.220 回答