Я создал ссылку на хранилище, в котором мои изображения хранятся в папке с уникальным идентификатором пользователя (для вошедшего в систему пользователя), поэтому при загрузке изображения с этой ссылкой на хранилище изображение будет go в этом месте пожарного депо. , а также ссылка на базу данных для этого изображения. Все это загружается правильно и отображается в моей базе данных в реальном времени в ID пользователя, а также в хранилище Firebase. Тем не менее, при попытке просмотреть его в представлении утилиты, происходит сбой приложения, если я просто помещаю и хранилище, и ссылку на базу данных в качестве папки «uploads» в root базы данных и хранилища, оно работает нормально, но при попытке сделайте так, чтобы изображения были взяты в уникальную папку UserID в папке загрузки, это не работает.
Код ошибки, который я получаю: java .lang.NullPointerException: Попытка вызвать виртуальный метод 'void android .widget.Button.setOnClickListener (android .view.View $ OnClickListener)' для пустой ссылки на объект
После отладки возникает ошибка после:
mDatabaseRef.addValueEventListener(new ValueEventListener() {
в коде получения файла RecyclerView.
Здесь показано, что при нажатии кнопки загрузки изображения и ссылки на базу данных переносятся в правильное местоположение:
Таким образом, проблема заключается в том, что невозможно найти изображения при их получении, поэтому если кто-то может дать мне правильный getReference для этого, или даже если Любая другая ошибка будет приветствоваться.
Задача загрузки файла
if (mImageUri != null) {
userID = mFirebaseAuth.getCurrentUser().getUid();
StorageReference fileReference = mStorageRef.child(userID + "/" + System.currentTimeMillis() + "." + getFileExtension(mImageUri));
mUploadTask = fileReference.putFile(mImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(0);
}
}, 500);
Toast.makeText(getActivity(), "Upload successful", Toast.LENGTH_SHORT).show();
Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
while (!urlTask.isSuccessful());
Uri downloadUrl = urlTask.getResult();
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(), mEditTextFileTags.getText().toString(),downloadUrl.toString() );
String uploadId = userID + "/" + mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadId).setValue(upload);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
mProgressBar.setProgress((int) progress);
}
});
}
RecyclerView получить код
mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads/");
mDatabaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Upload upload = postSnapshot.getValue(Upload.class);
mUploads.add(upload);
}
mAdapter = new ImageAdapter(getActivity(), mUploads);
mRecyclerView.setAdapter(mAdapter);
}