我的Activity中有一些EditText。用户必须填写它们并确认他的输入。一些EditText仅用于数字。为了确保只有有效值,我试图使用Integer.parseInt(...)将输入转换为Integer。问题是无论字符串是什么,都不会抛出NumberFormatException。我解决了这个问题,每次都会执行相应的行,但不会抛出异常。
以下是我的方法代码:
private boolean formNotEmpty()
{
boolean returnValue = true;
for(int i = 0; i < _editText.size();i++){
if(_editText.get(i).getText().toString().trim().length() == 0)
{
returnValue = false;
_toastMessage = "Es müssen alle Felder ausgefüllt werden.";
break;
}else if(_editText.get(i).getHint().equals(getResources().getString(R.string.rentactivity_hint_userPLZ))
||_editText.get(i).getHint().equals(getResources().getString(R.string.rentactivity_hint_userTelefon)))
{
try{
Integer.parseInt(_editText.get(i).getText().toString().trim());
}catch(NumberFormatException e)
{
_toastMessage += "In "+_editText.get(i).getHint().toString() +" dürfen nur Zahlen stehen. \n";
}
}
}
return returnValue;
}
我忘了将catch块中的returnValue设置为false。如果方法返回true,则_toastMessage将获取一个新字符串。这就是我假设永远不会抛出异常的原因。对于我造成的麻烦,我真的很抱歉。
非常感谢
答案 0 :(得分:0)
如果你指望代码抛出异常,并且你想用它来验证数据只接受数字,那么这不是正确的方法。异常处理不应该像你建议的那样明确地用作if-else。一种更简单,也许更正确的方法来实现你想要的东西:
在布局xml中声明
android:inputType="number"
对于特定的edittext,您只想将条目限制为数字。
执行此操作时,只有当您尝试以用户身份填写editText时,才能选择输入数字。在xml中添加后,您无需依赖Integer.parseInt()API来引发异常,以进行验证。
答案 1 :(得分:0)
您也可以使用EditText的attr:
android:digits="0123456789."
http://developer.android.com/reference/android/widget/TextView.html#attr_android:digits
之后用户只能写数字。