我的程序中2个文本框,分别是用来输入名称(字符串型)和数字(整型)。如果在两个文本框都没有输入信息或其中的一个文本框是空的,想有一个提示框显示“请输入内容”或“请输入数字”。程序总是出错,下面是代码片段:
public void onClick(DialogInterface dialog, int id) {
String item = itemET.getText().toString();
int quantity = Integer.parseInt(quantityET.getText().toString());
if(itemET.equals("")){
Toast t =Toast.makeText(GroceryList.this, "Please enter item", 5000);
t.show();
}
if(quantityET.equals("")){
Toast t =Toast.makeText(GroceryList.this, "Please enter quantity or enter 0 if none", 5000);
t.show();
}
这是日志中的错误信息:
09-19 10:01:51.766: E/AndroidRuntime(527): FATAL EXCEPTION: main
09-19 10:01:51.766: E/AndroidRuntime(527): java.lang.NumberFormatException: unable to parse '' as integer
09-19 10:01:51.766: E/AndroidRuntime(527): at java.lang.Integer.parseInt(Integer.java:362)
09-19 10:01:51.766: E/AndroidRuntime(527): at java.lang.Integer.parseInt(Integer.java:332)
09-19 10:01:51.766: E/AndroidRuntime(527): at com.mexican.recipes.GroceryList$1$1.onClick(GroceryList.java:60)
09-19 10:01:51.766: E/AndroidRuntime(527): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
09-19 10:01:51.766: E/AndroidRuntime(527): at android.os.Handler.dispatchMessage(Handler.java:99)
09-19 10:01:51.766: E/AndroidRuntime(527): at android.os.Looper.loop(Looper.java:123)
09-19 10:01:51.766: E/AndroidRuntime(527): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-19 10:01:51.766: E/AndroidRuntime(527): at java.lang.reflect.Method.invokeNative(Native Method)
09-19 10:01:51.766: E/AndroidRuntime(527): at java.lang.reflect.Method.invoke(Method.java:507)
09-19 10:01:51.766: E/AndroidRuntime(527): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-19 10:01:51.766: E/AndroidRuntime(527): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-19 10:01:51.766: E/AndroidRuntime(527): at dalvik.system.NativeStart.main(Native Method)
请大师们帮我看看问题出现在哪里?谢谢!
在这段代码中有两个独立的问题:在一个空串中调用把字符串转换成整型的方法会引发异常;在一个输入框中不能对字符串进行同级比较。代码应该这样写:
public void onClick(DialogInterface dialog, int id) {
String itemString = itemET.getText().toString();
String quantityString = quantityET.getText().toString();
int quantity;
if(itemString.equals(""))
{
Toast t =Toast.makeText(GroceryList.this, "Please enter item", 5000);
t.show();
}
if(quantityString.equals("")){
Toast t =Toast.makeText(GroceryList.this, "Please enter quantity or enter 0 if none", 5000);
t.show();
}
else {
quantity = Integer.parseInt(quantityString);
}
}
楼主你也太粗心了, if(itemET.equals("")){ 你用文本框去与空比较肯定报错了,你自己都写了
String item = itemET.getText().toString(); 用item去比较就可以了啊,下同。
另外,比较空建议用"".equals() 希望对你有帮助。
if(TextUtils.isEmpty(item)){
Toast.makeText(this,"为空", Toast.LENGTH_SHORT).show();
}