2 myc 100 myc_100 于 2012.09.20 11:46 提问

如何确保输入文本框不能为空?

我的程序中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)

请大师们帮我看看问题出现在哪里?谢谢!

4个回答

curie_87
curie_87   2012.09.20 14:40
已采纳

在这段代码中有两个独立的问题:在一个空串中调用把字符串转换成整型的方法会引发异常;在一个输入框中不能对字符串进行同级比较。代码应该这样写:

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);
   }
}
pby_bob
pby_bob   2012.09.21 12:37

楼主你也太粗心了, if(itemET.equals("")){ 你用文本框去与空比较肯定报错了,你自己都写了
String item = itemET.getText().toString(); 用item去比较就可以了啊,下同。
另外,比较空建议用"".equals() 希望对你有帮助。

zlQQhs
zlQQhs   2013.02.26 13:48
if(TextUtils.isEmpty(item)){
    Toast.makeText(this,"为空", Toast.LENGTH_SHORT).show();
}
gary16
gary16   2016.02.03 14:56

可以用__
if(TextUtils.isEmpty(item)){
Toast.makeText(this,"为空", Toast.LENGTH_SHORT).show();
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!