ProgressDialog не отображается в AsyncTask

Я создаю приложение для Android, которое зависит от данных, которые приложение получает из базы данных. Чтобы получить эти данные, у меня есть следующий класс (этот класс получает данные из базы данных в json, переводит и возвращает их):

public class Json {

public String jsonResult;

private Activity activity;
private String url = "http://json.example.org/json.php";
private String db, query;

public Json(Activity activity) {
    this.activity = activity;
}

public String accessWebService(String db, String query) {
    JsonReadTask task = new JsonReadTask();

    this.db = db;
    this.query = query;

    task.execute(new String[] { url });

    try {
        task.get();
    } catch (InterruptedException e) {
        Toast.makeText(activity.getApplicationContext(),
                "FATAL ERROR: The thread got interrupted", Toast.LENGTH_LONG).show();
    } catch (ExecutionException e) {
        Toast.makeText(activity.getApplicationContext(),
                "FATAL ERROR: The thread wasn't able to execute", Toast.LENGTH_LONG).show();
    }
    return jsonResult;
}

// Async Task to access the web
private class JsonReadTask extends AsyncTask<String, Void, String> {

    private final ProgressDialog dialog = new ProgressDialog(activity);

    protected String doInBackground(String... params) {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(params[0]);
        try {
            // add post data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("db", db));
            nameValuePairs.add(new BasicNameValuePair("query", query));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
            if (jsonResult.isEmpty()) {
                Toast.makeText(activity.getApplicationContext(),
                        "Error, connection is up but didn't receive data. That's strange...",
                        Toast.LENGTH_LONG).show();
                this.cancel(true);
            }

        } catch (ClientProtocolException e) {
            //Toast.makeText(activity.getApplicationContext(),
            //      "Error, Client Protocol Exception in JSON task",
            //      Toast.LENGTH_LONG).show();
            Log.i("Json", "Error, Client Protocol Exception in JSON task");
            this.cancel(true);
        } catch (IOException e) {
            //Toast.makeText(activity.getApplicationContext(),
            //      "Error, Please check your internet connection",
            //      Toast.LENGTH_LONG).show();
            Log.i("Json", "Error, Please check your internet connection");
            this.cancel(true);
        }
        return null;
    }

    private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));

        try {
            while ((rLine = rd.readLine()) != null) {
                answer.append(rLine);
            }
        } catch (IOException e) {
            Toast.makeText(activity.getApplicationContext(), "Error..." + e.toString(),
                    Toast.LENGTH_LONG).show();
        }
        return answer;
    }


    }
}// end async task

}

Я заметил, что мое приложение зависает при доступе к базе данных. После некоторого поиска в Google я обнаружил, что это был метод .get () в методе accessWebService (). Я попытался реализовать progressDialog, например, так (я также удалил метод .get ()):

private final ProgressDialog dialog = new ProgressDialog(activity);

    protected void onPreExecute() {
        super.onPreExecute();
        this.dialog.setMessage("Loading...");
        this.dialog.setCancelable(false);
        this.dialog.show();
    }

protected void onPostExecute(String result) {
            if (this.dialog.isShowing()) {
                this.dialog.dismiss();
            }
        }

но диалоговое окно не появилось, и я получил NullPointerExceptions, потому что приложение работает только при наличии данных:

result = json.accessWebService(db, query);

(возможно, важно упомянуть: я также использую этот метод в forloops)

Итак, теперь мой вопрос: как я могу изменить свое приложение так, чтобы я получал ProgressDialog при доступе к базе данных и без получения NullPointerExceptions? Я боюсь, что мне нужно перестроить все мое приложение, и если я должен это сделать, как мне это сделать? Я надеюсь, что вы, ребята, поняли мой вопрос и исправили это, потому что мне действительно нужна помощь. Заранее спасибо.

Постскриптум Извините, если мой английский не так хорош, я не являюсь носителем языка.