用户按Enter后解析EditText

时间:2013-03-05 00:12:55

标签: android android-edittext android-softkeyboard

我有一个很容易解决的问题,但我看不到互联网上的任何教程来帮助我。因为这个问题非常基础,所以我认为我的搜索没有使用正确的关键字。

我的问题是我使用方法解析EditText并使用此方法提供图表的值:

public int getSetPoint(){
    int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString());
    if (setPointRequest > 90 && setPointRequest < 120);
        return setPointRequest;
    // ...
}

我只想在setPointRequest()的值介于91119之间以及用户在键盘上按 Enter 后解析该值。当提示用户输入值时,键盘上只显示数字。

目前,用户输入的所有值即使未点击 Enter 也会在图表上注册。

感谢您的帮助! 数学

2 个答案:

答案 0 :(得分:0)

public int getSetPoint(){
  int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString());
  if(setPointRequest>90 && setPointRequest<120) //notice the lack of ;
    return setPointRequest;

  return -1;
}

处理回车键:

txtSetPoint.setOnEditorActionListener ( new OnEditorActionListener() {
  @Override
  public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
  {
    if (actionId == EditorInfo.IME_NULL)
      getSetPoint();
    return true;
  }
});

您的第一个问题是if之后的分号。删除它。

第二个问题是,在您修复此问题之后,您将收到编译时错误,因为您需要一个默认的return语句(可以保证在if不执行的情况下执行)。我使用了-1,您可以根据自己的需要进行自定义。我还将解析放在try/catch中以避免任何奇怪的错误,但这取决于你。

此外,命名很糟糕,getSetPoint()并没有立即从名称中清除,但返回类型和缺少参数确实给出了一个粗略的想法。

答案 1 :(得分:0)

结合A - C所说的,我们为您的EditText设置setOnKeyListener,这样它只会在用户点击回车键时获取文本。

public int getSetPoint(){
  int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString());
  if(setPointRequest>90 && setPointRequest<120)
    {return setPointRequest;}

  else {return -1;}
}

txtSetPoint.setOnKeyListener(new OnKeyListener(){ //this method waits for the enter key to be hit

@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {

    switch(arg1)
    {
          case KeyEvent.KEYCODE_ENTER:
               getSetPoint(); //when enter key is hit, call the getSetPoint method
               return true;
          default: 
               return false;

    }

   }
});