Android 如何在内部类片段中添加进度对话框

Android 如何在内部类片段中添加进度对话框,android,android-asynctask,progressdialog,Android,Android Asynctask,Progressdialog,我想在片段中创建progressdialog,但一直显示错误是原来添加到这里的窗口com.android.internal.policy.impl.phonewindow泄漏。请帮忙,这是我的代码 private class ListDaftarHargaAsync extends AsyncTask<String, Void, String> { @Override protected void onPreExecute() { progress

我想在片段中创建progressdialog,但一直显示错误是原来添加到这里的窗口com.android.internal.policy.impl.phonewindow泄漏。请帮忙,这是我的代码

 private class ListDaftarHargaAsync extends AsyncTask<String, Void, String> {

    @Override
    protected void onPreExecute() {
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setMessage("retrieving...");
        progressDialog.setIndeterminate(false);
        progressDialog.setCancelable(false);
    }

    @Override
    protected String doInBackground(String... params) {
        try {
            modelPost.setDataVouchers();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        String result = modelPost.resultString;
        if (result.length() != 0) {
            progressDialog.dismiss();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        progressDialog.dismiss();
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                fillDaftarHarga();
            }
        });
    }
}
私有类ListDaftarChargaAsync扩展异步任务{
@凌驾
受保护的void onPreExecute(){

progressDialog=新建progressDialog(getActivity()); progressDialog.setMessage(“正在检索…”); progressDialog.setUndeterminate(false); progressDialog.setCancelable(假); } @凌驾 受保护的字符串doInBackground(字符串…参数){ 试一试{ modelPost.setDataCredentials(); }捕获(JSONException e){ e、 printStackTrace(); } 字符串结果=modelPost.resultString; 如果(result.length()!=0){ progressDialog.disclose(); } 返回null; } @凌驾 受保护的void onPostExecute(字符串结果){ progressDialog.disclose(); getActivity().runOnUiThread(新的Runnable()){ @凌驾 公开募捐{ fillDaftarHarga(); } }); } }

上面显示的错误是因为您正在调用
progressDialog.disease()打开
doInBackground

检查是否显示进度对话框 你不能在doInBackground中触摸UI线程

    @Override 
    protected void onPreExecute() { 
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setMessage("retrieving..."); 
        progressDialog.setIndeterminate(false); 
        progressDialog.setCancelable(false); 
        progressDialog.show();
    } 

    @Override 
    protected String doInBackground(String... params) {
        try { 
            modelPost.setDataVouchers(); 
        } catch (JSONException e) {
            e.printStackTrace();
        } 
        String result = modelPost.resultString;
        return null; 
    } 

    @Override 
    protected void onPostExecute(String result) {
        if (null != progressDialog && progressDialog.isShowing()) {
            progressDialog.dismiss();
        } 
        getActivity().runOnUiThread(new Runnable() {
            @Override 
            public void run() { 
                fillDaftarHarga(); 
            } 
        }); 
    } 
}

progressDialog.show()在哪里?和post完全错误。并删除progressDialog.Disclose();来自doInBackground。它位于OnPostExceetMove中,移动
progressDialog.disease()在DoinBackground中我已经尝试过了,但仍然显示相同的errorprogressDialog=new ProgressDialog(CLASS_NAME.this)//尝试this@Ashadi您尝试的内容(您从DoinBackground中删除dissmiss)
    @Override 
    protected void onPreExecute() { 
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setMessage("retrieving..."); 
        progressDialog.setIndeterminate(false); 
        progressDialog.setCancelable(false); 
        progressDialog.show();
    } 

    @Override 
    protected String doInBackground(String... params) {
        try { 
            modelPost.setDataVouchers(); 
        } catch (JSONException e) {
            e.printStackTrace();
        } 
        String result = modelPost.resultString;
        return null; 
    } 

    @Override 
    protected void onPostExecute(String result) {
        if (null != progressDialog && progressDialog.isShowing()) {
            progressDialog.dismiss();
        } 
        getActivity().runOnUiThread(new Runnable() {
            @Override 
            public void run() { 
                fillDaftarHarga(); 
            } 
        }); 
    } 
}