我尝试添加自定义对话框,其中包括一个进度条,以显示当前文件到Firebase的上传过程。但这给了我这个错误。我认为将进度传递到自定义对话框时出现问题


  java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“ void android.widget.ProgressBar.setProgress(int)”


       uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                    double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();

                int currentprogress = (int) progress;

                    final Dialog dialog = new Dialog(testactivity.this);
                    WindowManager.LayoutParams aaa = new WindowManager.LayoutParams();
                    aaa.copyFrom(psdialog.getWindow().getAttributes());
                    aaa.width = WindowManager.LayoutParams.MATCH_PARENT;
                    aaa.height = WindowManager.LayoutParams.WRAP_CONTENT;

                  dialog.setContentView(R.layout.progresslayout);
                    dialog.setTitle("Custom Dialog");




                   ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressbar);
progressbar.setProgress(currentprogress);

                    psdialog.show();
                    psdialog.getWindow().setAttributes(lp);





                }
            }).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
                }
            });

最佳答案

你应该用

View dialogView = LayoutInflater.from(getContext()).inflate(R.layout.progresslayout, null, false);
dialog.setContentView(dialogView);
ProgressBar progressbar = (ProgressBar) dialogView.findViewById(R.id.progressbar);


代替

ProgressBar progressbar = (ProgressBar) findViewById(R.id.progressbar);

09-17 22:34