OnEditorActionListener不起作用

Ada*_*gyi 12 android android-edittext

我只是想在用户按下editText时输入事件.

我没有得到Toast的消息,没有得到"Enter press"而不是"按下了一些键!" 无论是.

什么mi做错了?

myEditText.setOnEditorActionListener(new OnEditorActionListener() {

    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

   Toast.makeText(getApplicationContext(), "Some key pressed!", Toast.LENGTH_LONG).show();

        if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
             Toast.makeText(getApplicationContext(), "Enter pressed", Toast.LENGTH_LONG).show();
                return true;
                }
                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

编辑:

好吧,它正在Android 2.3.3上工作,而不是在4.1.2 任何想法我怎么能在任何Android设备上使这个工作?

Yan*_*ong 27

请尝试设置EditText单行模式.

editText.setSingleLine();
Run Code Online (Sandbox Code Playgroud)

或者在xml布局文件中:

android:singleLine="true"
Run Code Online (Sandbox Code Playgroud)

UPDATE

android:singleLine="true"已弃用.从现在开始,使用android:maxLines="1"android:inputType="text"实现这一行为

要么

editText.setMaxLines(1);
editText.setInputType(InputType.TYPE_CLASS_TEXT);
Run Code Online (Sandbox Code Playgroud)

用于以编程方式设置.

  • 其他输入类型也可以工作(我认为如果它们阻止新行字符),例如"textPersonName" (2认同)

Gun*_*lan 2

myEditText.setOnEditorActionListener(new OnEditorActionListener() {

public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    Toast.makeText(getApplicationContext(), "some key pressed", Toast.LENGTH_LONG)
                        .show();
    return false;
}
});
Run Code Online (Sandbox Code Playgroud)

此代码显示在我的编辑文本中输入某些内容后按下回车键时按下的某个键。但我不知道你的代码有什么问题。