我试图在图像上传到服务器时显示来自自定义对话框的进度对话框。这是我所拥有的:
final Dialog mDialog = new Dialog(this, R.style.CustomDialogTheme);
mDialog.setContentView(R.layout.sendimage_dialog);
ImageView im = (ImageView)mDialog.findViewById(R.id.image_to_upload);
im.setImageURI(Constants.currImageURI);
Button upload = (Button)mDialog.findViewById(R.id.upload);
upload.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view) {
mDialog.dismiss();
});
mDialog.show();
mDialog.setOnDismissListener(new OnDismissListener(){
@Override
public void onDismiss(DialogInterface di) {
ProgressDialog progress = new ProgressDialog(CameraActivity.this, R.style.CustomDialogTheme);
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setMessage("Please wait while your photo is being uploaded.");
progress.show();
String response = uploadUserPhoto(new File(getRealPathFromURI(Constants.currImageURI)));
try {
parseResponse(response);
} catch (JSONException e) {
Log.d(TAG, e.getMessage());
e.printStackTrace();
}
progress.dismiss();
Toast.makeText(getApplicationContext(), "Using your computer, log into your graFighters account and your image will be waiting for you.", Toast.LENGTH_SHORT).show();
}
});
问题是,当我点击上传按钮时,我的进度对话框从未显示。知道为什么会这样吗?
最佳答案
这是因为您在主 (UI) 线程中执行网络调用 (uploadUserPhoto),这意味着在调用 show() 和 dismiss() 之间不会更新 UI。如果你想让它工作,你可以启动一个单独的工作线程来执行 uploadUserPhoto。工作线程完成后,它必须向 Activity 发出信号以移除对话框。
关于android - 从自定义对话框显示进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8402060/