当字段留空时,会导致应用崩溃。我怎么能阻止它?
EditText editText = (EditText)findViewById(R.id.editText);
userNumber = Integer.parseInt(editText.getText().toString());
我尝试给它一个.setError("不要留空!"),但它似乎没有做到这一点,应用程序崩溃了。
答案 0 :(得分:2)
从空或空字符串尝试parseInt
会引发FormatException
。所以,要么将代码包装在try / catch:
try {
userNumber = Integer.parseInt(editText.getText().toString());
}catch(Exception e){
// friendly error to the user: field is incorrect
}
或使用if语句确保editText不为空:
if(editText.getText().length() > 0){
// your code
}
if解决方案假设您的editText只接受数字(使用xml布局中的属性android:inputType="number"
)。
作为旁注,对于良好实践,请注意将parseInt
包装在try / catch中总是明智的。
答案 1 :(得分:1)
这段代码可以给你一个想法,
String input = editText.getText().toString();
if(input.length() > 0){
try {
int userNumber = Integer.parseInt(input);
// Write your code here
} catch (Exception e) {
Toast.makeText(this, "Enter only a number!", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
} else{
Toast.makeText(this, "Enter a number!", Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:1)
Use this it will help you and remove your crash
EditText editText = (EditText)findViewById(R.id.editText);
if(userNumber.length() > 0)
{
set your error screen is empty
}
else
{
userNumber = Integer.parseInt(editText.getText().toString());
}