2016-08-16 4 views
0

나는 간단한 타이머를 가지고 있으며 onTick 메서드를 사용하고 있습니다. 분 및 초 두 TextBox 있지만 그들 중 하나가 비어 때 충돌이 발생했습니다. 이 두 TextBox를 어떻게 관리 할 수 ​​있습니까? 이것은 Start Timer 버튼에 대한 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가 비어있는 경우, 로그인 고양이에서이 오류가

:

오류 :

7월 8일에서 17일까지 : 48 : 26.402 3789-3789/amir.app.pro .my_timer2 E/AndroidRuntime : 치명적인 예외 : 주 java.lang.NumberFormatException : 유효하지 않은 int : "" at java.lang.Integer.invalidInt (Integer.java:138) at java.lang.Integer.parseInt (Integer. java : 359) at java.awang.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) java.lang.reflect.Method.invokeNative (원시 메소드에 android.app.ActivityThread.main (ActivityThread.java:5041) 에서 android.os.Looper.loop (Looper.java:137) 에서 ) java.lang.reflect.Meth에서 od.invoke (Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java : dalvik.system.NativeStart.main 560) (기본 방법)

는이 라인을 의미

:

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

감사 로그 카드를 게시 해주세요. – TR4Android

답변

0

이 문제는이 빈 String의를 허용하지 않는 한, Integer.parseInt()의 동작에 의해 발생 . 이 메소드를 호출하기 전에 isEmpty()을 사용하여 입력이 비어 있는지 확인해야합니다.

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