0

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

我的问题是我EditText用一个方法解析一个并使用这个方法来提供图形的值:

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

我只想在用户按下键盘setPointRequest()之间91和之后的值时解析值。当提示用户输入值时,键盘上已仅显示数字。119Enter

目前,用户输入的所有值(即使他没有点击)Enter都已注册在图表上。

谢谢你的帮助!数学

4

2 回答 2

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,你可以根据自己的需要定制。为了避免出现任何奇怪的错误,我还将解析放在 atry/catch中,但这取决于您。

另外,命名不好,getSetPoint()从名字上看不太清楚,但返回类型和缺少参数确实给人一个粗略的印象。

于 2013-03-05T00:14:34.063 回答
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;

    }

   }
});
于 2013-03-05T00:29:10.540 回答