Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android keyListener无法识别输入_Android_Android Edittext_Android Softkeyboard_Onkeylistener - Fatal编程技术网

Android keyListener无法识别输入

Android keyListener无法识别输入,android,android-edittext,android-softkeyboard,onkeylistener,Android,Android Edittext,Android Softkeyboard,Onkeylistener,我在editText上有一个KeyListener,如下所示: tip = (EditText) findViewById(R.id.tip); tip.setOnKeyListener(new EditText.OnKeyListener(){ public boolean onKey(View v, int keyCode, KeyEvent event) { Log.i("debug123", "onKeyListener. event.getKeyCode():

我在editText上有一个KeyListener,如下所示:

tip = (EditText) findViewById(R.id.tip);
tip.setOnKeyListener(new EditText.OnKeyListener(){
    public boolean onKey(View v, int keyCode, KeyEvent event) {

        Log.i("debug123", "onKeyListener. event.getKeyCode(): " + event.getKeyCode());

        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
            checkInput();
            return true;
        }
        return false;
    }
});
但不能识别软键盘笔划。? 只有当我使用后退按钮(硬件按钮)离开活动时,侦听器才能识别该操作。 但从我所读到的所有内容来看,如果我想在EditText上使用用户输入,这是一种方法。

setOnKeyListener 注册一个回调,以便在按下硬件键时调用 这是一种观点。软件中的按键输入法通常不会 触发此侦听器的方法

setOnEditorActionListener 设置在上执行操作时要调用的特殊侦听器 文本视图。当按下回车键或 用户选择提供给IME的操作

要使用
setOnEditorActionListener
解决您的问题,请检查以下内容:

  • imeOptions
    inputType
    添加到您的
    EditText
这里,

  • actionId==EditorInfo.IME\u ACTION\u DONE
    从软键盘(IME)处理操作
  • event.getKeyCode()==KeyEvent.KEYCODE\u输入&&event.getAction()==KeyEvent.ACTION\u向下
    handle从硬件键盘输入键

使用
setOnEditorActionListener
代替
setOnKeyListener
用于您的目的检查是否对您有帮助。不,这对我不起作用。我在一部旧的智能手机上试用了这个应用程序(使用setOnKeyListener解决方案),效果如预期。但不是在我的新手机上。你能更新你的代码吗?你在布局方面做了哪些尝试?这应该行得通。这是测试,我没有输入部分的布局部分。现在它工作了,谢谢:)
<EditText
    android:id="@+id/tip"
    android:imeOptions="actionDone"
    android:inputType="text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
tip.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        if ( (actionId == EditorInfo.IME_ACTION_DONE) || (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) ) {
            checkInput();
            return true;
        } else {
            return false;
        }
    }
});