我不能用方法dismiss()停止ProgressDialog;
问题描述:
我不知道为什么我的代码不工作。我读了很多相同的问题,但这在大多数情况下都是正确的解决方案,但对我而言并不奏效。我的AsyncTask看起来是这样的:我不能用方法dismiss()停止ProgressDialog;
public class SavingAsync extends AsyncTask<String, String, String> {
private static final String TAG = "DrawView";
private ProgressDialog pd;
private Context context;
private File saveFile;
private Bitmap bitmap;
public SavingAsync(Context c, File sF, Bitmap b) {
context = c;
saveFile = sF;
bitmap = b;
}
@Override
protected void onPostExecute(String result) {
pd.dismiss();
super.onPostExecute(result);
}
@Override
protected void onPreExecute() {
pd = new ProgressDialog(context);
ProgressDialog.show(context, "", "Saving...");
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
OutputStream stream;
try {
stream = new FileOutputStream(saveFile);
bitmap.compress(CompressFormat.PNG, 80, stream);
stream.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
位图被成功地保住了,但ProgressDialog永远运行:/
答
你是显示ProgressDiaog与
ProgressDialog.show(context, "", "Saving...");
和表演方法返回一个PreogressDialog对象。
您正在使用pd
参考变量使用pd解雇的对话框。你的代码中的dismiss()
确实可以引用你正在显示的对话框。您应该将其分配给pd
。像这样
pd = ProgressDialog.show(context, "", "Saving...");
,然后调用pd.dismiss()
将消失,当前显示Dialog
。
请查看http://developer.android.com/reference/android/app/DialogFragment.html – 2012-07-20 00:09:55