我尝试添加自定义对话框,其中包括一个进度条,以显示当前文件到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);