Android 如何查看多个编辑文本框中的软键enter或done?

Android 如何查看多个编辑文本框中的软键enter或done?,android,Android,我有14个编辑文本框,用户可以随意更改。当其中一个文本发生更改时,按“回车/下一步/完成”键的软垫键应使用新文本重新运行计算。我试过onKey listener,但它在软键盘上不起作用;打开硬键盘。我曾经尝试过像onTextChanged这样的textwatcher,但在用户输入两位数或更多位数之前,当只输入一位数时,它会做出反应并运行计算。所以我听说onEditorActionListener在软键盘上工作以监视按键,但我无法正确理解语法。以下是我所拥有的: 在onCreate方法中: myE

我有14个编辑文本框,用户可以随意更改。当其中一个文本发生更改时,按“回车/下一步/完成”键的软垫键应使用新文本重新运行计算。我试过onKey listener,但它在软键盘上不起作用;打开硬键盘。我曾经尝试过像onTextChanged这样的textwatcher,但在用户输入两位数或更多位数之前,当只输入一位数时,它会做出反应并运行计算。所以我听说onEditorActionListener在软键盘上工作以监视按键,但我无法正确理解语法。以下是我所拥有的:

在onCreate方法中:
myEdittext1.setOnEditorActionListener(此)


myEdittext14.setOnEditorActionListener(此)

然后,在onCreate方法之外,我有:

@Override
 public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
 {  if (event.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION)
    {  //do my calcs}
    }
    return(true);
 }

代码给了我止赎关闭的业务。任何帮助都将不胜感激。

KeyEvent可以为空。你需要在你的听众中检查这种情况

v           The view that was clicked.
actionId    Identifier of the action. This will be either the identifier you supplied, or EditorInfo.IME_NULL if being called due to the enter key being pressed.
event       If triggered by an enter key, this is the event; otherwise, this is null.

onEditorAction是监听finish(完成)和Done(完成)软键盘操作的适当方式。

下面是一个工作版本:

@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{  if (event == null || event.getAction()==KeyEvent.ACTION_UP) 
   {  //do my calcs
      return(true);//reset key event for next press
   }  
 } 
enter键在事件变量中返回一个“null”,这就是为什么我在本文顶部的版本崩溃的原因。
Nick上面的代码也运行得很好,请记住为所有编辑文本框设置xml属性android:imeOptions=actionDone。

当我单击软键enter时,actionID=5(对于我在layout.xml文件中设置的“actionNext”属性,“event”=null。那么,当“event”事件“返回的值为null?如果(actionId==EditorInfo.IME\u ACTION\u DONE)KeyEvent总是为我返回null,那么我也在检查它。在什么情况下KeyEvent会返回bt Android文档中描述的其他内容,即“如果由enter键触发,这就是事件;”?