2012-03-04 7 views
0

충돌이 발생하여 이유를 찾을 수 없습니다. final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences (this); final int timer = prefs.getInt ("TIME", 86400000);CountdownTimer 문제

new CountDownTimer(timer, 1000) { 

     public void onTick(long elapsed) { 

      if(elapsed/3600>=10&&(elapsed/60000)/24>=10)   
        time.setText(elapsed/3600000+":"+(elapsed/60000)/24); 
        else 
         if(elapsed/60000>=10&&(elapsed/60000)/24<10) 
         time.setText(elapsed/36000+":"+"0"+elapsed/60000);    
         else if(elapsed/60000<10&&(elapsed/60000)/24>10) 
          time.setText("0"+elapsed/36000+":"+elapsed/60000);  
          if(elapsed/60000<10&&(elapsed/60000)/24<10) 
          time.setText("0"+elapsed/36000+":"+"0"+elapsed/60000); 

         SharedPreferences.Editor editor = prefs.edit(); 
           editor.putLong("TIME",elapsed); 
           editor.commit(); 
     } 
     public void onFinish() { 

     } 
     }.start(); 

Application crashes on line: 03-04 23:44:23.949: E/AndroidRuntime(404): java.lang.RuntimeException: Unable to start activity ComponentInfo{tedehlia.liadore/tedehlia.liadore.Hug}: java.lang.ClassCastException: java.lang.Long 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.os.Looper.loop(Looper.java:123) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-04 23:44:23.949: E/AndroidRuntime(404): at java.lang.reflect.Method.invokeNative(Native Method) 
03-04 23:44:23.949: E/AndroidRuntime(404): at java.lang.reflect.Method.invoke(Method.java:507) 
03-04 23:44:23.949: E/AndroidRuntime(404): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-04 23:44:23.949: E/AndroidRuntime(404): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-04 23:44:23.949: E/AndroidRuntime(404): at dalvik.system.NativeStart.main(Native Method) 
03-04 23:44:23.949: E/AndroidRuntime(404): Caused by: java.lang.ClassCastException: java.lang.Long 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ContextImpl$SharedPreferencesImpl.getInt(ContextImpl.java:2817) 
03-04 23:44:23.949: E/AndroidRuntime(404): at tedehlia.liadore.Hug.onCreate(Hug.java:43) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-04 23:44:23.949: E/AndroidRuntime(404): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-04 23:44:23.949: E/AndroidRuntime(404): ... 11 more 

답변

0

당신은 java.lang.Integer에 읽는됩니다

final int timer = prefs.getInt("TIME", 86400000); 

을하지만, 당신이 java.lang.Long의 저장됩니다

SharedPreferences.Editor editor = prefs.edit(); 
editor.putLong("TIME",elapsed); 
editor.commit(); 

그래서 그들 중 하나를 변경하는 것이 좋습니다 그들은 일치한다.

+0

첫 번째 줄에서 "int"가 길고 여전히 동일한 문제로 변경되었습니다. – AnTz

+0

죄송합니다, 몇 가지 실수를했습니다. 이것은 정답입니다. 고맙습니다! – AnTz

+0

CountDown Timer가 응용 프로그램을 종료 할 때 값을 저장하지 못하게했습니다. 어떤 아이디어? – AnTz