Android ProgressDialog不';不显示

Android ProgressDialog不';不显示,android,android-alertdialog,Android,Android Alertdialog,我创建了一个警报对话框,让用户选择是否从服务器下载内容 如果用户选择下载,AlertDialog将被取消,并出现一个连接到AsyncTask的ProgressDialog ProgressDialog从未显示。AlertDialog的“确定”按钮保持选中状态,直到AsyncTask的操作结束 如果我在代码中“注释”了AsyncTask操作,则AlertDialog将被正确解除,并显示ProgressDialog 我没有在真正的设备上尝试这个应用程序,只有模拟器 问题出在哪里?试试这段代码,这可能

我创建了一个
警报对话框
,让用户选择是否从服务器下载内容

如果用户选择下载,
AlertDialog
将被取消,并出现一个连接到
AsyncTask
ProgressDialog

ProgressDialog
从未显示。
AlertDialog
的“确定”按钮保持选中状态,直到
AsyncTask
的操作结束

如果我在代码中“注释”了
AsyncTask
操作,则
AlertDialog
将被正确解除,并显示
ProgressDialog

我没有在真正的设备上尝试这个应用程序,只有模拟器


问题出在哪里?

试试这段代码,这可能会对您有所帮助

private class allinfo extends AsyncTask<String, Void, JSONObject> {
        private ProgressDialog dialog;

        protected void onPreExecute(){
             dialog = ProgressDialog.show(collection.this, "Loading", "Loading. Please wait...", true,false);
        }

        @Override
        protected JSONObject doInBackground(String... arg0) {
            // TODO Auto-generated method stub

            return json;
        }
        protected void onPostExecute(JSONObject json)
        {
            dialog.dismiss();
            info(json);
        }

     }
私有类allinfo扩展异步任务{
私人对话;
受保护的void onPreExecute(){
dialog=ProgressDialog.show(collection.this,“正在加载”,“正在加载.请稍候…”,true,false);
}
@凌驾
受保护的JSONObject doInBackground(字符串…arg0){
//TODO自动生成的方法存根
返回json;
}
受保护的void onPostExecute(JSONObject json)
{
dialog.dismise();
信息(json);
}
}

ProgressDialog
AsyncTask
示例中使用
AlertDialog
正按钮实现:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
        // set title
        alertDialogBuilder.setTitle("Your Title");
        // set dialog message
        alertDialogBuilder
        .setMessage("Click yes to go to AsyncTask!")
        .setPositiveButton("Yes",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int id) {
                new MyAsyncTaskClass().execute();
            }
        })
        .setNegativeButton("No",new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int id) {
                // if this button is clicked, just close
                // the dialog box and do nothing
                dialog.cancel();
            }
        });
        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();
        // show it
        alertDialog.show();

    }

    // Here is the start of the AsyncTask    
    class MyAsyncTaskClass extends AsyncTask<String, String, Void> {

        private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);

        protected void onPreExecute() {
            progressDialog.setMessage("Dialog Message");
            progressDialog.show();
            progressDialog.setCanceledOnTouchOutside(false);
        }

        @Override
        protected Void doInBackground(String... params) {
            // TODO stuff
        }

        protected void onPostExecute(Void v) {
            this.progressDialog.dismiss();
        }
    }
}
公共类MainActivity扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局、主布局);
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(此);
//定名
alertDialogBuilder.setTitle(“您的标题”);
//设置对话框消息
alertDialogBuilder
.setMessage(“单击“是”转到AsyncTask!”)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
新建MyAsyncTaskClass().execute();
}
})
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
//如果单击此按钮,只需关闭
//打开对话框,不执行任何操作
dialog.cancel();
}
});
//创建警报对话框
AlertDialog AlertDialog=alertDialogBuilder.create();
//表现出来
alertDialog.show();
}
//这是异步任务的开始
类MyAsyncTaskClass扩展了AsyncTask{
private ProgressDialog ProgressDialog=新建ProgressDialog(MainActivity.this);
受保护的void onPreExecute(){
progressDialog.setMessage(“对话框消息”);
progressDialog.show();
progressDialog.setCanceledOnTouchOutside(false);
}
@凌驾
受保护的Void doInBackground(字符串…参数){
//待办事项
}
受保护的void onPostExecute(void v){
此.progressDialog.discouse()文件;
}
}
}
这是startDownload部分

private void startDownload() {
        String url ="file download link";
        Toast.makeText(dwn.this, url,Toast.LENGTH_LONG).show();
        new DownloadFileAsync().execute(url);
    }
这是异步任务

class DownloadFileAsync extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(DIALOG_DOWNLOAD_PROGRESS);
    }

    @Override
    protected String doInBackground(String... aurl) {
        int count;

    try {

    URL url = new URL(aurl[0]);
    URLConnection conexion = url.openConnection();
    conexion.connect();

    int lenghtOfFile = conexion.getContentLength();
    Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);

    InputStream input = new BufferedInputStream(url.openStream());
    OutputStream output = new FileOutputStream("/sdcard/file.type");

    byte data[] = new byte[1024];

    long total = 0;

        while ((count = input.read(data)) != -1) {
            total += count;
            publishProgress(""+(int)((total*100)/lenghtOfFile));
            output.write(data, 0, count);
        }

        output.flush();
        output.close();
        input.close();






             }
             catch (Exception e) {
                // TODO Auto-generated catch block

            }

    return null;

    }
    protected void onProgressUpdate(String... progress) {
         Log.d("ANDRO_ASYNC",progress[0]);
         mProgressDialog.setProgress(Integer.parseInt(progress[0]));
    }

    @Override
    protected void onPostExecute(String unused) {
        dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
    }
}

显示一些代码。你解决过这个问题吗?如果是,请将适当的答案标记为正确,或添加您自己的答案并将其标记为已接受。
class DownloadFileAsync extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        showDialog(DIALOG_DOWNLOAD_PROGRESS);
    }

    @Override
    protected String doInBackground(String... aurl) {
        int count;

    try {

    URL url = new URL(aurl[0]);
    URLConnection conexion = url.openConnection();
    conexion.connect();

    int lenghtOfFile = conexion.getContentLength();
    Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);

    InputStream input = new BufferedInputStream(url.openStream());
    OutputStream output = new FileOutputStream("/sdcard/file.type");

    byte data[] = new byte[1024];

    long total = 0;

        while ((count = input.read(data)) != -1) {
            total += count;
            publishProgress(""+(int)((total*100)/lenghtOfFile));
            output.write(data, 0, count);
        }

        output.flush();
        output.close();
        input.close();






             }
             catch (Exception e) {
                // TODO Auto-generated catch block

            }

    return null;

    }
    protected void onProgressUpdate(String... progress) {
         Log.d("ANDRO_ASYNC",progress[0]);
         mProgressDialog.setProgress(Integer.parseInt(progress[0]));
    }

    @Override
    protected void onPostExecute(String unused) {
        dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
    }
}
 @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_DOWNLOAD_PROGRESS:
            mProgressDialog = new ProgressDialog(this);
            mProgressDialog.setMessage("Downloading PDF file");
            mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            mProgressDialog.setCancelable(false);
            mProgressDialog.show();
            return mProgressDialog;
        default:
            return null;
        }
    }