我已经学会了如何从图库中选择图像,如何将其上传到火力库存储中,并将其显示在onActivityResult
中,一切正常。我的问题是,当我重新启动活动时,图像消失了。这是我的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_PHOTO && resultCode == RESULT_OK) {
Uri uri = data.getData();
StorageReference photoStorageReference = storageReference.child("Photos").child(uri.getLastPathSegment());
String path = storageReference.getPath(); //get the path of the last uploaded image
photoStorageReference.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUri = taskSnapshot.getDownloadUrl();
Picasso.with(StorageActivity.this).load(downloadUri).fit().centerCrop().into(imageView);
}
});
}
}
我创建了一个名为displayLastImage()
的方法。当我从onCreate
这样调用此方法时:
private void displayLastImage() {
StorageReference newStorageReference = storageReference.child("Photos/car.jpg");
Glide.with(this).using(new FirebaseImageLoader()).load(newStorageReference).into(imageView);
}
工作得很完美,但是当我使用onCreate
代替path
来"Photos/46"
调用方法时,这样:
private void displayLastImage() {
StorageReference newStorageReference = storageReference.child(path);
Glide.with(this).using(new FirebaseImageLoader()).load(newStorageReference).into(imageView);
}
我收到此错误:java.lang.IllegalArgumentException: childName cannot be null or empty
。如何获取上次上传图像的path
以便我能正确显示?
提前致谢!
答案 0 :(得分:0)
上传图片时,请将其存储在基于用户从图库中选择的图片的路径中。
String path = storageReference.getPath();
当您重新启动活动时,路径将不会被初始化,因此您尝试在未知路径中查找图像。
这意味着您需要“记住”活动调用之间的路径。您可以将其存储在应用的共享首选项中。这些都存在于活动之间。
更常见的是将图像路径(或其下载URL)存储在云存储中,例如Firebase数据库。您可以在Firebase Codelab for Android中找到相关示例。