开发者

How to watch multiple edittext boxes for a softkey enter or done press?

I have 14 edittext boxes that a user can change at will. When the text is changed in one of them, a softpad key press on the 'enter/next/done' key should re-run a calculation using the new text. I've tried onKey listener but it doesn't work on the soft keyboard, on;y the hard keypad. I've tried a textwatcher like onTextChanged but it reacts and runs the calculation when only a single digit is entered, before the user can input a two or more digit number. So... I hear the onEditorActionListener works on soft keypads to watch for the keypress, but I can't get the syntax right. Here's what I have:

In the onCreate method:

myEdittext1.setOnEditorActionListener(this);

...

myEdittext14.setOnEditorActionListener(this);

Then, outside the onCreate method, I have:

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

The code gives me the foreced-close bus开发者_Go百科iness. Any help would be greatly appreciated.


KeyEvent can be null. You need to check for this situation in your listener.

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 is the appropriate way to listen for finish and Done soft keyboard actions.


so here's a working version:

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

The enter key returns a 'null' in the event variable, thats why my version at the top of this post crashed. Nick's code above worked well too, just remember to set the xml property android:imeOptions=actionDone" for all of the edittext boxes.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜