如果我的问题格式错误,请告诉我。 我找到了一个适合我在工作中的项目需求的代码,并对其进行了调整和实现,使其成为我的代码,但是它并不合适。我不是专家程序员。仅供参考。 基本上,它的作用是:在上一个活动中输入一些基本详细信息之后,它会带您进入该活动(SetupActivity),并询问个人资料图像,用户名,全名...等。 现在,选择并裁剪图像后,它将立即立即将其上载到Firebase,然后返回到同一活动,该活动使您可以填写其余表单,然后单击“保存”并继续进入主活动。这不是坏事,但是...我从一点了解的代码来看,应该是通过当前用户上传的图像来获取图像,并将其加载到屏幕上的占位符(imageview)中,但它不起作用那。该图像显示在实时数据库中的Firebase存储BUT上,在用户下方有一个条目,用于输入图像URL及其类似物 这个:(profileimage:“ com.google.android.gms.tasks.zzu@3bb675f”) 这是什么意思,它是否不显示该图像的相应http链接?
就像我说过的那样,我仍然在学习编码,但是我尝试过几次重新排列代码,但是总是在遇到错误或在错误结束时遇到另一个错误。 我也尝试使用Glide而不是Picasso,但是在选择并上传后,它仍然无法在imageviewer中显示上传的图片。
ProfileImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
Intent galleryIntent = new Intent();
galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
galleryIntent.setType("image/*");
startActivityForResult(galleryIntent, Gallery_Pick);
}
});
UsersRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists())
{
if (dataSnapshot.hasChild("profileimage"))
{
String image = dataSnapshot.child("profileimage").getValue().toString();
Picasso.get().load(image).placeholder(R.drawable.profile).into(ProfileImage);
}
else
{
Toast.makeText(SetupActivity.this, "Please select profile image first.", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==Gallery_Pick && resultCode==RESULT_OK && data!=null)
{
Uri ImageUri = data.getData();
CropImage.activity(ImageUri)
.start(this);
}
if(requestCode==CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
{
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if(resultCode == RESULT_OK)
{
loadingBar.setTitle("Profile Image");
loadingBar.setMessage("Please wait, while we updating your profile image...");
loadingBar.show();
loadingBar.setCanceledOnTouchOutside(true);
Uri resultUri = result.getUri();
final StorageReference filePath = UserProfileImageRef.child("profileimage").child(currentUserID+".jpg");
filePath.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull final Task<UploadTask.TaskSnapshot> task)
{
if(task.isSuccessful())
{
Toast.makeText(SetupActivity.this, "Profile Image stored successfully to Firebase storage...", Toast.LENGTH_SHORT).show();
String downloadUrl = task.getResult().getStorage().getDownloadUrl().toString();
UsersRef.child("profileimage").setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task)
{
if(task.isSuccessful())
{
Intent selfIntent = new Intent(SetupActivity.this, SetupActivity.class);
startActivity(selfIntent);
Toast.makeText(SetupActivity.this, "Profile Image stored to Firebase Database Successfully...", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
我希望在选择并上传到Firebase之后,图像会出现在imageview上,而且firebase实时数据库中的图像url也是正确的http格式。