AsyncTask 对话框未关闭

AsyncTask Dialog Not Dismissed

我正在通过异步任务获取一些数据,但它始终显示在屏幕上,从不关闭或隐藏。为什么?

public class getJson extends AsyncTask<String,Void,String>
{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(kategori.this);
        pDialog.setMessage("Yükleniyor...");
        pDialog.setIndeterminate(true);
        pDialog.setCancelable(false); // ProgressDialog u iptal edilemez hale getirdik.
        pDialog.show();
    }

    @Override
    protected String doInBackground(String... unused) {
        String resString = "";
        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet("http://*********.com/api.asp?cmd=katdok&ID="+talepKategori);
        try {
            HttpResponse response = client.execute(get);
            HttpEntity entity;
            entity = response.getEntity();
            InputStream is = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line+ "\n");
            }
            resString = sb.toString();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return resString;
    }

    @Override
    protected void onPostExecute(String string) {
        super.onPostExecute(string);
        pDialog.dismiss();
    }
}

我正在使用以下方法确保在任务完成后关闭对话框,

private void hideProgress() {
        if (pDialog != null) {
            if (pDialog.isShowing()) {
                pDialog.dismiss();
                pDialog = null;
            }
        }
    }

避免获取空值并强行关闭对话框。

试试下面的代码

public class getJson extends AsyncTask<String,Void,String>
{
    ProgressDialog progressDialog = null;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog = ProgressDialog.show(kategori.this,
                    getResources().getText(R.string.app_name), getResources()
                    .getText(R.string.wait_message), true);
    }

    @Override
    protected String doInBackground(String... unused) {
        String resString = "";
        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet("http://*********.com/api.asp?cmd=katdok&ID="+talepKategori);
        try {
            HttpResponse response = client.execute(get);
            HttpEntity entity;
            entity = response.getEntity();
            InputStream is = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line+ "\n");
            }
            resString = sb.toString();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return resString;
    }

    @Override
    protected void onPostExecute(String string) {
        super.onPostExecute(string);
        if(progressDialog.isShowing())
                progressDialog.dismiss();
    }
}