2012-02-18 61 views
1

所以这是我遇到的问题:每当publishProgress(sentCount);在应用程序崩溃中被调用。我环顾四周,仍然不知道这个原因。任何帮助是极大的赞赏!由于Android的ASyncTask publishProgress错误

class MySmsTask extends AsyncTask<String, Integer, Integer> { 

    protected ProgressBar onPreExecute(String...messageData) { 
     final ProgressBar progress = progressSend; 
     int msgCount = Integer.parseInt(messageData[2]); 
     progress.setMax(msgCount); 
     progress.setProgress(0); 
     return progress; 
    } 
    @Override 
    protected Integer doInBackground(String... messageData) { 
     int sentCount = 0; 
     int size = 1; 
     int delay = Integer.parseInt(messageData[3]); 
     int delayf = delay + 2; 
     int msgCount = Integer.parseInt(messageData[2]); 
     String message = messageData[1]; 
     String phoneNo = messageData[0]; 
     if (phoneNo.length()>0 && message.length()>0){ 
      for (sentCount = 0; sentCount < msgCount; sentCount++) { 
       for (int i = 0; i < size; i++) { 
        sendSMS(messageData[0], messageData[1]); 

        try { 
         publishProgress(sentCount); 
         Thread.sleep(delayf * 1000); 

        } catch (InterruptedException e) { 

         e.printStackTrace(); 
        } 
       } 
      } 

     } 
     return sentCount; 

    } 
    protected void onProgressUpdate(Integer... mprogress) { 
     progress.setProgress(mprogress[0]); 
     /*Toast.makeText(getBaseContext(), "Sent " + mprogress + " messages", Toast.LENGTH_SHORT).show();*/ 
    } 

    protected void onPostExecute(Integer result) { 
     Toast.makeText(getBaseContext(), "Sent " + result + " messages", Toast.LENGTH_SHORT).show(); 
    } 

错误:

02-18 00:04:44.019: E/AndroidRuntime(32561): FATAL EXCEPTION: main 
02-18 00:04:44.019: E/AndroidRuntime(32561): java.lang.NullPointerException 
02-18 00:04:44.019: E/AndroidRuntime(32561): at   txt.messager.app.TxtMessagerActivity$MySmsTask.onProgressUpdate(TxtMessagerActivity.java:85) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at txt.bomber.app.TxtMessagerActivity$MySmsTask.onProgressUpdate(TxtMessagerActivity.java:1) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:432) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at android.os.Looper.loop(Looper.java:130) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at android.app.ActivityThread.main(ActivityThread.java:3906) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at java.lang.reflect.Method.invokeNative(Native Method) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at java.lang.reflect.Method.invoke(Method.java:507) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 
02-18 00:04:44.019: E/AndroidRuntime(32561): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 
02-18 00:04:44.019: E/AndroidRuntime(32561):at dalvik.system.NativeStart.main(Native Method) 

回答

3

progressonPreExecute是一个局部变量。我不知道编译器在你的onProgressUpdate中看到哪个progress,但它不是一回事。因此,它可能是空的。

+0

太棒了!解决了我刚刚重命名变量。谢谢 – Kebob 2012-02-18 08:45:14