我有一个很容易解决的问题,但我看不到互联网上的任何教程来帮助我。因为这个问题非常基础,所以我认为我的搜索没有使用正确的关键字。
我的问题是我使用方法解析EditText
并使用此方法提供图表的值:
public int getSetPoint(){
int setPointRequest = Integer.parseInt(txtSetPoint.getText().toString());
if (setPointRequest > 90 && setPointRequest < 120);
return setPointRequest;
// ...
}
我只想在setPointRequest()
的值介于91
和119
之间以及用户在键盘上按 Enter 后解析该值。当提示用户输入值时,键盘上只显示数字。
目前,用户输入的所有值即使未点击 Enter 也会在图表上注册。
感谢您的帮助! 数学
答案 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;
}
}
});