我已经尝试将EditText默认值设置为零,但是当编辑和删除时为“”(空白区域,编辑文本字段中没有更多的字词_
按下提交按钮时显示异常Invalid Int“”。你能告诉我如何解决这个例外吗?
以下是我的代码
for (int j = 0; j < selectedChannels; j++) {
lconper = (Spinner) findViewById (j+120);
int monthlyFeeforChannel = 0;
contractPeriodSelected.add((String) lconper.getSelectedItem());
String monthlyTest = txtMonthlyFee[j].getText().toString().trim();
String freeMonths = txtFreePeriod[j].getText().toString().trim();
if(monthlyTest.trim()==null || monthlyTest.trim()==""){
new AlertDialog.Builder(this)
.setTitle("Warning")
.setMessage(
"You must fill in Monthly Fees for subscribed channels!")
.setNeutralButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// if this button is clicked, close
// current activity
dialog.cancel();
}});
break;
}
else
{
Log.d("Month" , monthlyTest);
Log.d("freeMonths" , freeMonths);
monthlyFeeforChannel = Integer.parseInt(monthlyTest);
monthlyFee.add(monthlyFeeforChannel);
FreePeriod.add(freeMonths);
}
}
logcat的
06-20 13:52:03.711: E/AndroidRuntime(17713): FATAL EXCEPTION: main
06-20 13:52:03.711: E/AndroidRuntime(17713): java.lang.IllegalStateException: Could not execute method of the activity
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.view.View$1.onClick(View.java:3130)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.view.View.performClick(View.java:3652)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.view.View$PerformClick.run(View.java:14354)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.os.Handler.handleCallback(Handler.java:605)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.os.Handler.dispatchMessage(Handler.java:92)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.os.Looper.loop(Looper.java:137)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.app.ActivityThread.main(ActivityThread.java:4519)
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.reflect.Method.invokeNative(Native Method)
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.reflect.Method.invoke(Method.java:511)
06-20 13:52:03.711: E/AndroidRuntime(17713): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
06-20 13:52:03.711: E/AndroidRuntime(17713): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
06-20 13:52:03.711: E/AndroidRuntime(17713): at dalvik.system.NativeStart.main(Native Method)
06-20 13:52:03.711: E/AndroidRuntime(17713): Caused by: java.lang.reflect.InvocationTargetException
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.reflect.Method.invokeNative(Native Method)
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.reflect.Method.invoke(Method.java:511)
06-20 13:52:03.711: E/AndroidRuntime(17713): at android.view.View$1.onClick(View.java:3125)
06-20 13:52:03.711: E/AndroidRuntime(17713): ... 11 more
06-20 13:52:03.711: E/AndroidRuntime(17713): Caused by: java.lang.NumberFormatException: Invalid int: ""
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.Integer.invalidInt(Integer.java:138)
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.Integer.parseInt(Integer.java:359)
06-20 13:52:03.711: E/AndroidRuntime(17713): at java.lang.Integer.parseInt(Integer.java:332)
06-20 13:52:03.711: E/AndroidRuntime(17713): at com.test.Eystem1.Confirm.submitOrder(Confirm.java:415)
06-20 13:52:03.711: E/AndroidRuntime(17713): ... 14 more
答案 0 :(得分:7)
在你使用的aboue代码中,比如将String转换为Integer,在这种情况下,你不会将“”(空字符串)转换为整数
Integer.parseInt(monthlyTest); // Here monthyTest value is ""
请确保字符串不为空转换。
检查String的长度是否应大于0.
if(monthlyTest.length()>0)
感谢.....
答案 1 :(得分:2)
试
if(monthlyTest == null || monthlyTest.trim().equals("")){
您也可以使用
if(monthlyTest == null || monthlyTest.trim().isEmpty()){
答案 2 :(得分:0)
使用try/catch
块围绕有问题的行。
try {
Log.d("Month" , monthlyTest);
Log.d("freeMonths" , freeMonths);
monthlyFeeforChannel = Integer.parseInt(monthlyTest);
MonthlyFee.add(monthlyFeeforChannel);
FreePeriod.add(freeMonths);
}
catch (NumberFormatException nfe) {
nfe.printStackTrace();
// Alert the user/log the error, etc.
}
答案 3 :(得分:0)
我认为,你必须将它添加到你的编辑文本
editText.setHint("0");
答案 4 :(得分:0)
如果输入类型设置为数字,则无法测试“空”,因此最好的解决方案是使用以下方法测试长度是否为零:
if(number.length() == 0) {EditText is empty!!!}