Android progressDialog和AsyncTask

Android progressDialog和AsyncTask,android,progress-bar,progressdialog,Android,Progress Bar,Progressdialog,我想创建一个里面有进度条的对话框。 但是我看到了Toas消息,但是我没有看到对话框和tre进度条。为什么 谢谢你给evryone很多钱 //prepare for a progress bar dialog progressBar = new ProgressDialog(this); progressBar.setCancelable(true); progressBar.setMessage("Creazione Dat

我想创建一个里面有进度条的对话框。 但是我看到了Toas消息,但是我没有看到对话框和tre进度条。为什么

谢谢你给evryone很多钱

//prepare for a progress bar dialog
            progressBar = new ProgressDialog(this);
            progressBar.setCancelable(true);
            progressBar.setMessage("Creazione Database\nIngredienti...");
            progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressBar.setProgress(0);
                    progressBar.show();
            new BackgroundAsyncTask(appContext, progressBar).execute();
。。。 ...

我创建了一个泛型类:

public class BackgroundAsyncTask extends AsyncTask<Void, Integer, Void> {

    int myProgressCount;
    Context context;
    ProgressDialog progressBar;      

    public BackgroundAsyncTask(Context appContext, ProgressDialog progressBar) {
        // TODO Auto-generated constructor stub
        this.context = appContext;
        this.progressBar = progressBar;
    }

    @Override
    protected void onPreExecute() {
           Toast.makeText(context, "onPreExecute Start Progress Bar", Toast.LENGTH_LONG).show();
           progressBar.setProgress(0);
           myProgressCount = 0;
    }

    @Override
    protected Void doInBackground(Void... params) {
           // TODO Auto-generated method stub
           while (myProgressCount < 100) {
                 myProgressCount++;
                 /**
                  * Runs on the UI thread after publishProgress(Progress...) is
                  * invoked. The specified values are the values passed to
                  * publishProgress(Progress...).
                  *
                  * Parameters values The values indicating progress.
                  */

                 publishProgress(myProgressCount);
                 SystemClock.sleep(100);
           }
           return null;
    }

    /**
     * This method can be invoked from doInBackground(Params...) to publish
     * updates on the UI thread while the background computation is still
     * running. Each call to this method will trigger the execution of
     * onProgressUpdate(Progress...) on the UI thread.
     *
     * onProgressUpdate(Progress...) will not be called if the task has been
     * canceled.
     *
     * Parameters values The progress values to update the UI with.
     */
    @Override
    protected void onProgressUpdate(Integer... values) {
           // TODO Auto-generated method stub
           progressBar.setProgress(values[0]);
    }

    @Override
    protected void onPostExecute(Void result) {
           Toast.makeText(context, "onPostExecute End Progress Bar",Toast.LENGTH_LONG).show();
        progressBar.dismiss();   
    }
}
public类BackgroundAsyncTask扩展了AsyncTask{
int-myProgressCount;
语境;
ProgressDialog progressBar;
public BackgroundAsyncTask(上下文appContext,ProgressDialog progressBar){
//TODO自动生成的构造函数存根
this.context=appContext;
this.progressBar=progressBar;
}
@凌驾
受保护的void onPreExecute(){
Toast.makeText(上下文,“onPreExecute开始进度条”,Toast.LENGTH_LONG.show();
progressBar.setProgress(0);
myProgressCount=0;
}
@凌驾
受保护的Void doInBackground(Void…参数){
//TODO自动生成的方法存根
而(myProgressCount<100){
myProgressCount++;
/**
*在publishProgress(Progress…)启用后在UI线程上运行
*已调用。指定的值是传递给的值
*出版进度(进度…)。
*
*参数值指示进度的值。
*/
出版进度(myProgressCount);
系统时钟。睡眠(100);
}
返回null;
}
/**
*可以从doInBackground(Params…)调用此方法来发布
*在后台计算仍在运行时更新UI线程
*正在运行。对此方法的每次调用都将触发
*UI线程上的onProgressUpdate(进度…)。
*
*如果任务已完成,则不会调用onProgressUpdate(Progress…)
*取消了。
*
*参数值用于更新UI的进度值。
*/
@凌驾
受保护的void onProgressUpdate(整型…值){
//TODO自动生成的方法存根
progressBar.setProgress(值[0]);
}
@凌驾
受保护的void onPostExecute(void结果){
Toast.makeText(上下文,“onPostExecute结束进度条”,Toast.LENGTH_LONG.show();
progressBar.disclose();
}
}

进度范围为0..10000。
-如图所示。使用适合该范围的数字。

我强烈建议使用对话框片段而不是对话框

公共类ProgressDialogFragment扩展了DialogFragment{

public static LoadingDialogFragment newInstance() {
    ProgressDialogFragment frag = new ProgressDialogFragment ();
    return frag;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    final ProgressDialog dialog = new ProgressDialog(getActivity());
    dialog.setMessage(getString(R.string.loading_text));
    dialog.setIndeterminate(true);
    dialog.setCancelable(false);

    // Disable the back button
    OnKeyListener keyListener = new OnKeyListener() {

        @Override
        public boolean onKey(DialogInterface dialog, int keyCode,
                KeyEvent event) {

            if( keyCode == KeyEvent.KEYCODE_BACK){                  
                return true;
            }
            return false;
        }


    };
    dialog.setOnKeyListener(keyListener);
    return dialog;
}
}


此处有更多信息

您是否确实在
进度条上调用了
.show()