lolliloop
lolliloop

Reputation: 399

Nullpointer exception in onProgressUpdate of progress bar inside asyntask

Can you help me figure it out why I am always getting null pointer exception when I am calling the onProgressUpdate in asynctask. Below is my code:

public class SyncBrand extends AsyncTask<String, String, Boolean>
{

private ProgressDialog progressDialog;

public static final int BRAND_DIALOG_DOWNLOAD_PROGRESS = 0;

public SyncBrand(Context context, String _username, String _password, String _code,String _remarks,String _date,String _province,String _infotype,
        String _competitor,ArrayList<String> _brands, ArrayList<String> _segments) 
{
    ...
}

protected Dialog onCreateDialog(int id) {
    switch (id) {
    case BRAND_DIALOG_DOWNLOAD_PROGRESS:
        progressDialog = new ProgressDialog(mContext);
        progressDialog.setMessage("Updating Sub Brands..");
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setCancelable(false);
        progressDialog.show();
        return progressDialog;
    default:
        return null;
    }
  }

@SuppressWarnings("deprecation")
protected void onPreExecute() 
{     
    super.onPreExecute();
    ((Activity) mContext).showDialog(BRAND_DIALOG_DOWNLOAD_PROGRESS);
}

protected Boolean doInBackground(String... arg0) 
{
    //int count = 0;
    try{
        ...
    String subBrandId = "", subBrandName = "", brandId = "", IsActive = "";
    for (int i = 0; i < newSubBrandCode.size(); i++) 
    {
         subBrandId     = newSubBrandCode.get(i);
         subBrandName   = newBrandname.get(i);
         brandId        = newBrandCode.get(i);
         IsActive       = newIsActive.get(i);

        databaseHandler.updateSubBrand(new Cons_Sync(subBrandId, subBrandName, brandId, IsActive));
        publishProgress("" + String.valueOf(0));
    }

    databaseHandler.close();
    return true;
}

protected void onProgressUpdate(String... progress) {
    Log.d("ANDRO_ASYNC",progress[0]);

    progressDialog.setProgress(Integer.parseInt(progress[0]));
 }

@SuppressWarnings("deprecation")
protected void onPostExecute(Boolean valid)
{

    ((Activity) mContext).removeDialog(BRAND_DIALOG_DOWNLOAD_PROGRESS);
    if(valid){
        ...
    }else{
        ...
    }
}
  }

Below is my logcat:

09-30 14:10:26.285: E/AndroidRuntime(19139): FATAL EXCEPTION: main
09-30 14:10:26.285: E/AndroidRuntime(19139): java.lang.NullPointerException
09-30 14:10:26.285: E/AndroidRuntime(19139):    at com.resd.ireport.SyncBrand.onProgressUpdate(SyncBrand.java:183)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at com.red.ireport.SyncBrand.onProgressUpdate(SyncBrand.java:1)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:606)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at android.os.Looper.loop(Looper.java:132)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at android.app.ActivityThread.main(ActivityThread.java:4123)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at java.lang.reflect.Method.invokeNative(Native Method)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at java.lang.reflect.Method.invoke(Method.java:491)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
09-30 14:10:26.285: E/AndroidRuntime(19139):    at dalvik.system.NativeStart.main(Native Method)

Upvotes: 0

Views: 393

Answers (3)

CR Sardar
CR Sardar

Reputation: 1018

Call

progressDialog.setMax(INT_MAX_VALUE);

in onCreateDialog() & try

Upvotes: 1

Nitesh Tiwari
Nitesh Tiwari

Reputation: 4762

Try this if this could help...

publishProgress("" + String.valueOf(i));

Let me know if problem persist...

Upvotes: 0

android_dev
android_dev

Reputation: 1477

in onPreExcute method ur calling

((Activity) mContext).showDialog(BRAND_DIALOG_DOWNLOAD_PROGRESS);

try to call

onCreateDialog(BRAND_DIALOG_DOWNLOAD_PROGRESS)

your problem will be solved..!

Upvotes: 3

Related Questions