Android progressDialog和AsyncTask
我想创建一个里面有进度条的对话框。 但是我看到了Toas消息,但是我没有看到对话框和tre进度条。为什么 谢谢你给evryone很多钱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
//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()
?