Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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键盘输入键事件不工作_Android_Android Softkeyboard_Text Editor - Fatal编程技术网

Android键盘输入键事件不工作

Android键盘输入键事件不工作,android,android-softkeyboard,text-editor,Android,Android Softkeyboard,Text Editor,嗨,我正在android应用程序中使用文本编辑器。当我在android软键盘上触摸enter键时,我希望光标移动到edittext中的下一行,并且必须执行一个方法,所以我使用了setOnKeyListener(),因为当我按下该键时,它会转到这个方法并执行myMethod()。 我的主要问题是,当我使用这一行代码(edittext.setInputType(InputType.TYPE_CLASS_TEXT);)时,它正在进入setOnKeyListener()方法并很好地执行myMethod,

嗨,我正在android应用程序中使用文本编辑器。当我在android软键盘上触摸enter键时,我希望光标移动到edittext中的下一行,并且必须执行一个方法,所以我使用了setOnKeyListener(),因为当我按下该键时,它会转到这个方法并执行myMethod()。 我的主要问题是,当我使用这一行代码(edittext.setInputType(InputType.TYPE_CLASS_TEXT);)时,它正在进入setOnKeyListener()方法并很好地执行myMethod,但光标位置仍然在同一行中,如果我删除了该行,光标位置正在更新(转到下一行),但setOnKeyListener()没有执行。 请建议我如何处理它,我的代码是

  edittext = (EditText) findViewById(R.id.editText);
        edittext.setInputType(InputType.TYPE_CLASS_TEXT);
        edittext.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                // If the event is a key-down event on the "enter" button
                if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
                        (keyCode == KeyEvent.KEYCODE_ENTER)) {
                    Toast.makeText(MainActivity.this, edittext.getText(), Toast.LENGTH_SHORT).show();
                    myMethod();

                    return true;
                }
                return false;
            }
        });
提前感谢。

尝试返回“false”:

尝试返回“false”:


尝试实现
setOnEditorActionListener
,而不是
setOnKeyListener
。并删除这一行
edittext.setInputType(InputType.TYPE\u CLASS\u TEXT)希望这有帮助。如果我删除了那行代码,它仍然无法转到setOnEditorActionListner,但光标正在更新。下面是代码edittext.setOnEditorActionListener(新的TextView.OnEditorActionListener(){@Override公共布尔onEditorAction(TextView v,int actionId,KeyEvent事件){if((event.getAction()==KeyEvent.ACTION\u DOWN)&(actionId==KeyEvent.KEYCODE\u ENTER)){MyMethod();return false;}您也可以尝试
addTextChangedListener
TextWatcher
editText.addTextChangedListener(new TextWatcher(){@Override public void onTextChanged(字符序列s,int start,int-before,int-count){}@Override public void beforeTextChanged(字符序列s,int start,int count,int after){}@Override public void beforeTextChanged(可编辑的s){if(s.charAt(s.length()-1)='\n'){myMethod();}}
当从键盘上按ENTER键时,我必须执行一些功能。我认为使用addTextListner和TextWatcher是不可能的。我想你没有阅读我的问题。我理解你的问题,我尝试了两个建议的选项,我认为这两个选项都有效,你可以自己检查,而不是
setOnKeyListener
,试试看要实现
setOnEditorActionListener
。并删除此行
edittext.setInputType(InputType.TYPE\u CLASS\u TEXT)
希望这能有所帮助。如果我删除了那行代码,它仍然无法转到setOnEditorActionListner,但光标正在更新。下面是代码edittext.setOnEditorActionListener(new TextView.OnEditorActionListener(){@Override public boolean onEditorAction(TextView v,int actionId,KeyEvent event){if((event.getAction()==KeyEvent.ACTION_DOWN)&&(actionId==KeyEvent.KEYCODE_ENTER)){MyMethod();返回false;}您还可以尝试
addTextChangedListener
TextWatcher
editText.addTextChangedListener(new TextWatcher(){@Override public void onTextChanged(字符序列s,int start,int before,int count){}@Override public void beforeTextChanged(字符序列s,int start,int count,int after){}@Override public void afterextchanged(可编辑的s){if(s.charAt(s.length()-1)='\n'){myMethod();}}}
当从键盘上按ENTER键时,我必须执行一些功能。我认为使用addTextListner和TextWatcher是不可能的。我想你没有阅读我的问题。我理解你的问题,我尝试了两个建议的选项,两个选项都有效,你可以自己检查
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
      Toast.makeText(MainActivity.this, edittext.getText(),  Toast.LENGTH_SHORT).show();
      myMethod();

      return false; // here
 }