Nav*_*Nav 0 android progressdialog android-asynctask
public class async extends AsyncTask<String, Integer, String>{
ProgressDialog prog;
@Override
protected void onPreExecute() {
super.onPreExecute();
prog=new ProgressDialog(async.this);//This is chowing error
prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prog.setMax(100);
prog.show();
}
@Override
protected String doInBackground(String... params) {
for (int i = 0; i < 10; i++) {
publishProgress(5);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
prog.dismiss();
}
@Override
protected void onProgressUpdate(Integer... values) {
prog.setProgress(values[0]);
super.onProgressUpdate(values);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码产生错误:
构造函数ProgressDialog(AndroidasynctaskActivity.async)未定义
为什么会这样?有人可以帮我解决这个问题吗?
如前所述,发生这种情况的原因是因为ProgressDialog您使用的构造函数需要一个Context对象.这是一个如何做到这一点的例子.
修改您的async类并添加一个接受Context对象的单参数构造函数.然后修改onPreExecute方法使用说Context.例如:
public class async extends AsyncTask<String, Integer, String>{
private Context context;
ProgressDialog prog;
public async(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
prog=new ProgressDialog(context);
prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
prog.setMax(100);
prog.show();
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后实例化并运行AsyncTask:
async mTask = new async(context);
mTask.execute(params);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |