title: ProgressDialog in AsyncTask throwing a NullPointerException?
body: <p>I'm trying to display a <code>ProgressDialog</code> while loading a <code>json</code> feed from a http server. I get a <code>NullPointerException</code> in <code>doInBackground</code> and <code>onPostExecute</code>. If I have not misunderstood <code>AsyncTask</code>, in <code>onPostExecute</code> the final code will run! Where is my fault?
  Here's my activity code:</p>
  
  <pre><code>public class ResultInput extends Activity {
  
      int count = 0;
      String mainUrl;
      String[] product_pict_part;
      InputStream is = null;
      private ProgressDialog pd;
      String TAG = "meinDebug";
      ParseEan parse_code;
      String readProductNameEan;
      ImageView productPic;
      String productName;
      Drawable drawable;
      TextView product_name;
      TextView text_level;
      int productLevel;
  
      private Context context;
  
      // private MyProgressDialog dialog;
      @Override
      public void onCreate(Bundle icicle) {
          super.onCreate(icicle);
          new ProgressTask(ResultInput.this).execute();
      }
  
      private InputStream fetch(String urlString) throws MalformedURLException,
              IOException {
          DefaultHttpClient httpClient = new DefaultHttpClient();
          HttpGet request = new HttpGet(urlString);
          HttpResponse response = httpClient.execute(request);
          return response.getEntity().getContent();
      }
  
      private class ProgressTask extends AsyncTask&lt;String, Void, Boolean&gt; {
          private ProgressDialog dialog;
          private Activity activity;
  
          // private List&lt;Message&gt; messages;
          public ProgressTask(Activity activity) {
              this.activity = activity;
              context = activity;
              dialog = new ProgressDialog(context);
          }
  
          /** progress dialog to show user that the backup is processing. */
  
          /** application context. */
  
          protected void onPreExecute() {
              this.dialog.setMessage("Progress start");
              this.dialog.show();
          }
  
          @Override
          protected void onPostExecute(final Boolean success) {
              pd.dismiss();
              productPic.setImageDrawable(drawable);
  
              Log.i(TAG, "Picture URL " + mainUrl);
              product_name.setText(productName);
  
              if (productLevel == 1) {
                  text_level.setText("helal");
              } else if (productLevel == 2) {
                  text_level.setText("mittel");
              } else if (productLevel == 3) {
                  text_level.setText("haram");
              } else if (productLevel == 4) {
                  text_level.setText("in analyse");
              }
  
              if (dialog.isShowing()) {
                  dialog.dismiss();
              }
  
              if (success) {
                  Toast.makeText(context, "OK", Toast.LENGTH_LONG).show();
              } else {
                  Toast.makeText(context, "Error", Toast.LENGTH_LONG).show();
              }
          }
  
          protected Boolean doInBackground(final String... args) {
              try {
                  mainUrl = "http://nur-efsan.de/websHalalCheck/public/image/index/dir/";
                  product_name = (TextView) findViewById(R.id.produkt_name);
                  text_level = (TextView) findViewById(R.id.text_level);
                  productPic = (ImageView) findViewById(R.id.productpic);
                  productName = parse_code.parseJSONPost("data", "name",
                          readProductNameEan);
                  String productPicture = parse_code.parseJSONPost("data",
                          "image", readProductNameEan);
                  productLevel = Integer.parseInt(parse_code.parseJSONPost(
                          "data", "levelId", readProductNameEan));
  
                  product_pict_part = productPicture.split("/");
                  mainUrl = mainUrl + product_pict_part[0] + "/name/"
                          + product_pict_part[1];
  
                  try {
                      is = fetch(mainUrl);
                  } catch (MalformedURLException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  } catch (IOException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  drawable = Drawable.createFromStream(is, "src");
  
                  return true;
              } catch (Exception e) {
                  Log.e("tag", "error", e);
                  return false;
              }
          }
  
      }
  
  }
  </code></pre>