0

我的应用程序中有一个 EditText。此 editText 使用 editText.setText 方法每 10 秒通过代码更新一次。当用户打开软键盘时,我想停止此更新。当用户完成他的输入操作(按完成)按钮时,我想从 editText.setText 恢复更新。我试过 InputMethodManager isActive(View) 来检查我的 EditText 当前是否在使用 editText.setText 方法时处于活动状态。这在显示键盘时非常有效。但是当用户单击完成按钮并且软键盘被隐藏时,isActive(View) 仍然给出 true 并且我的 editText.setText 没有被调用。下面是我的代码,它每 10 秒更新一次 editText。

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if(!imm.isActive(editText)){
   editText.setText("10.2");
  }

因此,即使用户按下软键盘的完成按钮,此 imm.isActive(editText) 也会返回 true。请提出任何方法来完成这项工作。

4

1 回答 1

0

解决方案 1

创建一个布尔控制变量isKeyboardVisible并将其设置为何true时显示键盘,false何时隐藏它。在调用之前检查它的值setText()

解决方案 2

一个替代的、有点老套的解决方案是将改变EditText值的两个部分都包含在一个synchronized块中。这样,每个部分都会在执行之前等待另一个部分完成。

解决方案 3

您可以收听EditText焦点更改事件并对其做出反应。它们往往与软键盘显示/隐藏本身相吻合。

于 2013-10-22T15:56:21.297 回答