android - 从自定义对话框显示进度对话框

标签 android dialog progressdialog

我试图在图像上传到服务器时显示来自自定义对话框的进度对话框。这是我所拥有的:

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/

相关文章:

android - 在刚刚完成的进度对话框中显示警报对话框android

android - 如何在我想稍后编辑的 Android 中存储文件?

android - 相当于Android中的iOS NSNotificationCenter?

android - youtube视频下载android

python - 检查文件是否存在于 Python 2.7 中

android - ProgressDialog 没有出现在 onProgressUpdate 方法中

android - 如何在 Android 中点击动画 View 或对象?

c++ - MFC中获取最近文件列表的方法

file - WinForms 相当于 Java 的 JFileChooser.FILES_AND_DIRECTORIES

android - ProgressDialog 的自定义背景颜色