更改焦点时,EditText字段不会清除

时间:2014-05-07 05:07:23

标签: android button android-edittext

我有两个EditText字段和一个按钮,

EditText topNumericInputField; // Top text field
EditText bottomNumericInputField; // Bottom text field
Button clearButton; // Regular Button

当我更改焦点时,我正在尝试清除其中的文本,我的onClick方法如下所示:

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.topInputField:
            clearTextBoxes();
            break;
        case R.id.bottomNumericInputField:
            clearTextBoxes();
            break;
        case R.id.clearButton:
            clearTextBoxes();
            break;
        }
}
private void clearTextBoxes() {
    topNumericInputField.getText().clear();
    bottomNumericInputField.getText().clear();
}

现在,它可以通过以下方式清除两个字段:

a)我点击的字段已经有焦点

b)我点击清除按钮

如果我将焦点从顶部字段更改为底部字段,它会获得焦点,然后我需要再次单击它。

我不确定究竟发生了什么,但我确定它与LogCat日志中出现的内容有关,每当我改变焦点时会出现两行:

Tag: IInputConnectionWrapper Text: beginBatchEdit on inactive InputConnection
Tag: IInputConnectionWrapper Text: endBatchEdit on inactive InputConnection

我已经尝试过搜索,我看到一些类似的提交,但似乎没有一个真正是我正在寻找的。

谢谢!

3 个答案:

答案 0 :(得分:1)

我认为问题不在于设置文本,但问题在于捕获错误的事件。

正如您所说,您希望在更改焦点时清除edittext,然后您应该覆盖onFocusChange(View v, boolean hasfocus)以捕获该事件。您需要实施FocusChangeListener

   edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean focus) {
            if (focus) {
                ((EditText)v).setText("");
            }
        }
    });

一个简单的实现应如上所示。 Refer this了解详细信息

答案 1 :(得分:0)

您可以将文本设置为null。

topNumericInputField.setText("");
bottomNumericInputField.setText("");

答案 2 :(得分:0)

您只需要通过以下方式清除文字:

 topNumericInputField.setText("");
 bottomNumericInputField.setText("");