我有一个简单的Timer,它可以使用onTick方法。我有几个分钟和秒的TextBox,但是当其中一个是空的时它崩溃了。我该如何管理这两个TextBox? 这是我的启动计时器按钮的onClick方法中的代码。
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.startTimer:
//If CountDownTimer is null then start timer
if (countDownTimer == null) {
String getMinutes = minutes.getText().toString();//Get minutes from Minutes EditText
String getSeconds = seconds.getText().toString();//Get seconds from Seconds EditText
//Check validation over EditText
if ((!getMinutes.equals("") && getMinutes.length() > 0)) {
int noOfMinutes = Integer.parseInt(getMinutes) * 60 * 1000;//Convert minutes into milliseconds
int noOfSeconds=Integer.parseInt(getSeconds) * 1000;//Convert Seconds into milliseconds
time = noOfMinutes + noOfSeconds;
startTimer(time);//start countdown
startTimer.setText(getString(R.string.stop_timer));//Change Text
} else
Toast.makeText(MainActivity.this, "Please enter no. of Minutes.", Toast.LENGTH_SHORT).show();//Display toast if Minute EditText is empty
} else {
//else stop timer and change text
stopCountdown();
startTimer.setText(getString(R.string.start_timer));
}
break;
case R.id.resetTimer:
stopCountdown();//stop count down
startTimer.setText(getString(R.string.start_timer));//Change text to Start Timer
countdownTimerText.setText(getString(R.string.timer));//Change Timer text
break;
}
}
当getSeconds EdidtTex为空时,Log Cat中出现此错误:
错误:
08-17 07:48:26.402 3789-3789 / amir.app.pro.my_timer2 E / AndroidRuntime:FATAL EXCEPTION:main java.lang.NumberFormatException:无效的int:“” 在java.lang.Integer.invalidInt(Integer.java:138) 在java.lang.Integer.parseInt(Integer.java:359) 在java.lang.Integer.parseInt(Integer.java:332) at amir.app.pro.my_timer2.MainActivity.onClick(MainActivity.java:54) 在android.view.View.performClick(View.java:4204) 在android.view.View $ PerformClick.run(View.java:17355) 在android.os.Handler.handleCallback(Handler.java:725) 在android.os.Handler.dispatchMessage(Handler.java:92) 在android.os.Looper.loop(Looper.java:137) 在android.app.ActivityThread.main(ActivityThread.java:5041) at java.lang.reflect.Method.invokeNative(Native Method) 在java.lang.reflect.Method.invoke(Method.java:511) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 在dalvik.system.NativeStart.main(本地方法)
它指的是这一行:
int noOfMinutes = Integer.parseInt(getMinutes) * 60 * 1000;
答案 0 :(得分:0)
此问题是由Integer.parseInt()
的行为引起的,因为这不允许空String
。在调用此方法之前,您需要使用isEmpty()
检查输入是否为空:
int noOfMinutes = getMinutes.isEmpty() ? 0 : Integer.parseInt(getMinutes) * 60 * 1000;
int noOfSeconds = getSeconds.isEmpty() ? 0 : Integer.parseInt(getSeconds) * 1000;