【问题标题】:clear EditText when Enter is pressed按下 Enter 时清除 EditText
【发布时间】:2011-11-14 10:05:08
【问题描述】:

我想在单击按钮或按 Enter 时清除 EditText。按钮可以正常工作,但是当按下 Enter 时,它会清除 EditText 和 TextView。

感谢您的帮助。谢谢。

public void onClick(View v) {
        textViewEcho.setText(editTextInput.getText().toString());
        editTextInput.setText("");
    }

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode == 66) {
        textViewEcho.setText(editTextInput.getText().toString());
        editTextInput.setText("");
    }
    return false;
}

更新:我发现onKey被调用了两次,这就是为什么TextView的内容被清除了,但无法弄清楚为什么onKey被调用了两次,这是Android中的错误吗?!!!!!!

我尝试了 onKeyUp,它确实有效。

【问题讨论】:

  • 尝试在 editTextInput.setText("") 之前将 editTextInput.getText().toString()) 分配给 String 变量,然后将该 String 值分配给 textViewEcho。
  • onKey 被调用了两次,因为一次用于 KEY_DOWN,一次用于 KEY_UP 事件。

标签: android


【解决方案1】:

试试这个,需要返回true。

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (keyCode == 66) {
        String txt = editTextInput.getText().toString();
        textViewEcho.setText(txt);
        editTextInput.setText("");
        return true; // return the true from here
    }
    return false;
}

【讨论】:

  • 谢谢你,Pratik,返回 true 使 EditText 字段稳定(在使用之前它曾经移动过),但是当我按 Enter 时,textView 仍然被清除。顺便说一句,无论是否将 editTextInput.getText().toString() 分配给字符串,结果都是相同的。
【解决方案2】:
edittext.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
                if (keyCode == KeyEvent.KEYCODE_ENTER) 
//write the code what ever u want when u press enter                {
edittext.setText("");

                }

                return false;
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-03
    • 2015-06-21
    • 2016-09-06
    • 1970-01-01
    • 2018-09-17
    • 2014-05-28
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多