2012-06-28 60 views
1

我想在收到SMS(在兩個模擬器上測試)時增加進度條的進度,但出現錯誤 - 意外地強制關閉。從活動A調用方法到活動B時出現錯誤

這是我在練習一段代碼:

progressBar = (ProgressBar)findViewById(R.id.progresslevel); 
    new Thread(new Runnable() { 
    public void run() { 
     // TODO Auto-generated method stub 
     while (progressStatus < 50000) { 
     mHandler.post(new Runnable() { 
      public void run() { 
      // TODO Auto-generated method stub 
      progressBar.setProgress(progressStatus); 
      } 
     }); 
     } 
    }).start(); 

增加法活動答:

public static void increaseValue(Boolean isSMS) { 
    if (isSMS == true) { 
    progressStatus += 5000; 
    } else { 
    progressStatus += 7000; 
    } 
} 

我的活動SMSReceiver:

public class SMSReceive extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     FloCareActivity.increaseValue(true); 
    } 
} 

如何解決呢?從日誌貓

錯誤:

06-28 11:24:33.733: W/dalvikvm(915): threadid=3: thread exiting with uncaught exception (group=0x4001aa28) 
06-28 11:24:33.733: E/AndroidRuntime(915): Uncaught handler: thread main exiting due to uncaught exception 
06-28 11:24:33.763: E/AndroidRuntime(915): java.lang.RuntimeException: Unable to instantiate receiver nth.flocare.demo.SMSReceiver: java.lang.ClassNotFoundException: nth.flocare.demo.SMSReceiver in loader [email protected] 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2520) 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.app.ActivityThread.access$3000(ActivityThread.java:116) 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1843) 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.os.Looper.loop(Looper.java:123) 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.app.ActivityThread.main(ActivityThread.java:4203) 
06-28 11:24:33.763: E/AndroidRuntime(915): at java.lang.reflect.Method.invokeNative(Native Method) 
06-28 11:24:33.763: E/AndroidRuntime(915): at java.lang.reflect.Method.invoke(Method.java:521) 
06-28 11:24:33.763: E/AndroidRuntime(915): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
06-28 11:24:33.763: E/AndroidRuntime(915): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
06-28 11:24:33.763: E/AndroidRuntime(915): at dalvik.system.NativeStart.main(Native Method) 
06-28 11:24:33.763: E/AndroidRuntime(915): Caused by: java.lang.ClassNotFoundException: nth.flocare.demo.SMSReceiver in loader [email protected] 
06-28 11:24:33.763: E/AndroidRuntime(915): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
06-28 11:24:33.763: E/AndroidRuntime(915): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
06-28 11:24:33.763: E/AndroidRuntime(915): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
06-28 11:24:33.763: E/AndroidRuntime(915): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2513) 
06-28 11:24:33.763: E/AndroidRuntime(915): ... 10 more 
06-28 11:24:33.813: I/dalvikvm(915): threadid=7: reacting to signal 3 
06-28 11:24:33.895: I/dalvikvm(915): Wrote stack trace to '/data/anr/traces.txt' 
06-28 11:29:33.833: I/Process(915): Sending signal. PID: 915 SIG: 9 
+1

你能不能從logcat中添加錯誤日誌? –

+1

你能檢查DDMS的實際異常和堆棧跟蹤嗎? – gideon

+0

@SudarNimalan:logcat的以上 – user1465351

回答

0

你的代碼中有一個Thread緊密循環已創建爲快,因爲它可以去發佈新Runnable s到一個Handler事件循環。你還沒有發佈足夠的代碼或堆棧跟蹤,這使我們能夠看到這是否是唯一的問題,但它肯定是一個需要修復的問題。僅在進度值更改時發佈消息。當然,不需要單獨的線程來完成它。這是一個非常快速的操作。其他線程只能用於防止UI線程被長時間操作延遲。

2

這意味着你的清單告訴android你有一個名爲nth.flocare.demo.SMSReceiver的類,Android無法找到它。

你做了錯誤的是

你的類名,如代碼和Android SMSReceive正在試圖尋找nth.flocare.demo.SMSReceiver所以重命名類SMSReceiver