【问题标题】:get Minute and Second in android Timer在android Timer中获取分钟和秒
【发布时间】:2016-08-16 21:37:21
【问题描述】:

我有一个简单的计时器,它可以与 onTick 方法一起使用。我有两个 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: 致命异常: 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) 在 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) 在 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(Native Method)

它指的是这一行:

 int noOfMinutes = Integer.parseInt(getMinutes) * 60 * 1000;

【问题讨论】:

  • 请贴出异常的logcat,谢谢!

标签: android timer android-edittext


【解决方案1】:

这个问题是由Integer.parseInt() 的行为引起的,因为这不允许空的Strings。在调用此方法之前,您需要使用isEmpty() 检查输入是否为空:

int noOfMinutes = getMinutes.isEmpty() ? 0 : Integer.parseInt(getMinutes) * 60 * 1000;
int noOfSeconds = getSeconds.isEmpty() ? 0 : Integer.parseInt(getSeconds) * 1000;

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2014-06-11
    • 1970-01-01
    • 2022-10-13
    • 2017-10-05
    相关资源
    最近更新 更多