问题描述
更新时,我的图像在图像视图中不可见。但是,firebase会使用新图像进行更新。
有人可以帮我吗?
下面是我更新Firebase的代码。
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK){
loadingBar.setTitle("Set Profile Image");
loadingBar.setMessage("Please wait!");
loadingBar.setCanceledOnTouchOutside(false);
loadingBar.show();
Uri resultUri = result.getUri();
StorageReference filePath = userProfileImageReference.child(currentUserID + ".jpg");
filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if (task.isSuccessful()) {
Toast.makeText(SettingsActivity.this,"Profile Image Uploaded Successfully!",Toast.LENGTH_SHORT).show();
final String downloadUrl = task.getResult().getStorage().getDownloadUrl().toString();
rootRef.child(currentUserID).child("Image")
.setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(SettingsActivity.this,"Image saved successfully",Toast.LENGTH_SHORT).show();
}
else {
String message = task.getException().toString();
Toast.makeText(SettingsActivity.this,"Error: " + message,Toast.LENGTH_SHORT).show();
}
loadingBar.dismiss();
}
});
}
else {
String message = task.getException().toString();
Toast.makeText(SettingsActivity.this,Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}
}
private void retrieveUserinformation() {
rootRef.child(currentUserID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("Name") && (dataSnapshot.hasChild("ProfileImage")))) {
String retrieveUserName = dataSnapshot.child("Name").getValue().toString();
String retrieveProfileImage = dataSnapshot.child("ProfileImage").getValue().toString();
username.setText(retrieveUserName);
Picasso.get().load(retrieveProfileImage).into(userProfileImage);
}
else if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("Name"))) {
String retrieveUserName = dataSnapshot.child("Name").getValue().toString();
username.setText(retrieveUserName);
}
else {
Toast.makeText(SettingsActivity.this,"Please update your profile information...",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
解决方法
发生这种情况是因为您的图像太大,这就是为什么要花一些时间从存储中下载图像。
在上载到Firebase存储之前尝试调整图像的大小。