如何观看多个edittext框以进入或完成按键软键?

时间:2011-03-17 03:14:13

标签: android

我有14个edittext框,用户可以随意更改。当其中一个文本被更改时,按下'enter / next / done'键上的软键盘键应该使用新文本重新运行计算。我已经尝试过onKey监听器,但它不能在软键盘上工作;是硬键盘。我已经尝试了像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);
 }

该代码为我提供了密切关注的业务。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

KeyEvent可以为null。您需要在听众中检查这种情况。

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是侦听完成和完成软键盘操作的合适方法。

答案 1 :(得分:1)

所以这是一个工作版本:

@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
   }  
 } 

回车键在事件变量中返回'null',这就是为什么我在这篇文章顶部的版本崩溃的原因。 Nick上面的代码也运行得很好,只记得为所有的edittext框设置xml属性android:imeOptions = actionDone。