android studio中从firebase数据库检索图像时出现问题

android studio中从firebase数据库检索图像时出现问题,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我一直在尝试用java在android studio中制作聊天应用程序。我已经成功地编写了上载图像并将其从Firebase存储传输到Firebase数据库的代码。当我试图用毕加索的方法检索图像时,我试图检索的图像视图不可见 private Button UpdateAccountSettings; private EditText userName, userStatus; private CircleImageView userProfileImage; private String curr

我一直在尝试用java在android studio中制作聊天应用程序。我已经成功地编写了上载图像并将其从Firebase存储传输到Firebase数据库的代码。当我试图用毕加索的方法检索图像时,我试图检索的图像视图不可见

private Button UpdateAccountSettings;
private EditText userName, userStatus;
private CircleImageView userProfileImage;
private String currentUserID;
private FirebaseAuth mAuth;
private DatabaseReference RootRef;
private StorageReference UserProfileImagesRef;
private static final int GalleryPic = 1;
private ProgressDialog loadingBar;
private String photoUrl;

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);

    mAuth = FirebaseAuth.getInstance();
    currentUserID = mAuth.getCurrentUser().getUid();
    RootRef = FirebaseDatabase.getInstance().getReference();
    UserProfileImagesRef = FirebaseStorage.getInstance().getReference().child("Profile Images");

    InitializeFields();

   userProfileImage.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v)
       {
            Intent galleryIntent = new Intent();
            galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
            galleryIntent.setType("image/*");
            startActivityForResult(galleryIntent, GalleryPic);
       }
   });



    UpdateAccountSettings.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            UpdateSetting();
        }
    });


    RetrieveUserInfo();

}



private void InitializeFields() {

    UpdateAccountSettings = (Button) findViewById(R.id.update_settings_button);
    userName = (EditText) findViewById(R.id.set_user_name);
    userStatus = (EditText) findViewById(R.id.set_profile_status);
    userProfileImage = (CircleImageView) findViewById(R.id.set_profile_image);
    loadingBar = new ProgressDialog(this);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{

    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode==GalleryPic && resultCode==RESULT_OK && data!=null)
            {

                Uri ImageUri = data.getData();
                CropImage.activity()
                        .setGuidelines(CropImageView.Guidelines.ON)
                        .setAspectRatio(1, 1)
                        .start(this);
            }

            if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
            {
                CropImage.ActivityResult result = CropImage.getActivityResult(data);


                if (resultCode == RESULT_OK)
                {



                    loadingBar.setMessage("Uploading Image");
                    loadingBar.setCanceledOnTouchOutside(false);
                    loadingBar.show();

                     Uri resultUri = result.getUri();


                    StorageReference filepath = UserProfileImagesRef.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 Saved Successfully...", Toast.LENGTH_SHORT).show();
                                loadingBar.dismiss();

                                String downloadUrl = task.getResult().getDownloadUrl().toString();

                                RootRef.child("Users").child(currentUserID).child("image")
                                        .setValue(downloadUrl)
                                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                                            @Override
                                            public void onComplete(@NonNull Task<Void> task)
                                            {
                                                if (task.isSuccessful())
                                                {
                                                    loadingBar.dismiss();
                                                }
                                                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, "Error : " + message, Toast.LENGTH_SHORT).show();
                                loadingBar.dismiss();
                            }

                        }
                    });
                }
    }

}

private void UpdateSetting() {
    String setUserName = userName.getText().toString();
    String setStatus = userStatus.getText().toString();

    if (TextUtils.isEmpty(setUserName)) {
        AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this);
        builder.setCancelable(true);
        builder.setTitle("Error");
        builder.setMessage("Please write a user name");
        builder.setNegativeButton("Back", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        builder.show();
    } else if (TextUtils.isEmpty(setStatus)) {
        AlertDialog.Builder builder = new AlertDialog.Builder(SettingsActivity.this);
        builder.setCancelable(true);
        builder.setTitle("Error");
        builder.setMessage("Please write a Status");
        builder.setNegativeButton("Back", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        builder.show();

    } else {
        HashMap<String, String> profileMap = new HashMap<>();
        profileMap.put("uid", currentUserID);
        profileMap.put("name", setUserName);
        profileMap.put("status", setStatus);
        profileMap.put("image", photoUrl);
        RootRef.child("Users").child(currentUserID).setValue(profileMap)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            SendUserToMainActivity();
                            Toast.makeText(SettingsActivity.this, "Profile Updated Successfully", Toast.LENGTH_SHORT).show();

                        }
                        else
                            {

                            String message = task.getException().toString();
                            Toast.makeText(SettingsActivity.this, "Error :" + message, Toast.LENGTH_SHORT).show();

                        }
                    }

                    ;
                });
    }
}



private void RetrieveUserInfo()
{
    RootRef.child("Users").child(currentUserID)
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot)
                {
                    if((dataSnapshot.exists()) && (dataSnapshot.hasChild("name") && (dataSnapshot.hasChild("image"))))
                    {
                        String retrieveUserName = dataSnapshot.child("name").getValue().toString();
                        String retrieveUserStatus = dataSnapshot.child("status").getValue().toString();
                        String retrieveProfileImage = dataSnapshot.child("image").getValue().toString();

                        userName.setText(retrieveUserName);
                        userStatus.setText(retrieveUserStatus);
                        photoUrl = retrieveProfileImage;
                        Picasso.get().load(retrieveProfileImage).into(userProfileImage);


                    }
                    else if ((dataSnapshot.exists()) && (dataSnapshot.hasChild("name")))
                    {
                        String retrieveUserName = dataSnapshot.child("name").getValue().toString();
                        String retrieveUserStatus = dataSnapshot.child("status").getValue().toString();

                        userName.setText(retrieveUserName);
                        userStatus.setText(retrieveUserStatus);
                    }
                    else
                    {
                        Toast.makeText(SettingsActivity.this, "Please Set Your Profile Info...", Toast.LENGTH_SHORT).show();
                    }

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError)
                {

                }
            });
}



private void SendUserToMainActivity()
{
    Intent mainIntent = new Intent(SettingsActivity.this, MainActivity.class);
    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(mainIntent);
    finish();
}
private按钮UpdateAccountSettings;
私有编辑文本用户名、用户状态;
私有CircleImageView用户档案图像;
私有字符串currentUserID;
私人消防队;
私有数据库引用RootRef;
私有存储参考UserProfileImagesRef;
专用静态最终int GalleryPic=1;
私有进程对话框加载栏;
私有字符串地址;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u设置);
mAuth=FirebaseAuth.getInstance();
currentUserID=mAuth.getCurrentUser().getUid();
RootRef=FirebaseDatabase.getInstance().getReference();
UserProfileImagesRef=FirebaseStorage.getInstance().getReference().child(“配置文件图像”);
初始化字段();
userProfileImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v)
{
Intent gallerycontent=新Intent();
GalleryContent.setAction(Intent.ACTION\u GET\u CONTENT);
GalleryContent.setType(“image/*”);
startActivityForResult(GalleryContent,GalleryPic);
}
});
UpdateAccountSettings.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
更新设置();
}
});
RetrieveUserInfo();
}
私有void InitializeFields(){
UpdateAccountSettings=(按钮)findViewById(R.id.update\u settings\u按钮);
userName=(EditText)findViewById(R.id.set\u user\u name);
userStatus=(EditText)findViewById(R.id.set\u profile\u status);
userProfileImage=(CircleImageView)findViewById(R.id.set\u profile\u image);
loadingBar=新建进度对话框(此对话框);
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data)
{
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==GalleryPic&&resultCode==RESULT\u OK&&data!=null)
{
Uri ImageUri=data.getData();
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.setAspectRatio(1,1)
.启动(本);
}
if(requestCode==CropImage.CROP\u IMAGE\u ACTIVITY\u REQUEST\u CODE)
{
CropImage.ActivityResult结果=CropImage.getActivityResult(数据);
if(resultCode==RESULT\u OK)
{
loadingBar.setMessage(“上传图像”);
加载条。设置为取消到外部(false);
loadingBar.show();
Uri resultUri=result.getUri();
StorageReference文件路径=UserProfileImagesRef.child(currentUserID+“.jpg”);
filepath.putFile(resultUri)
.addOnCompleteListener(新的OnCompleteListener()
{
@凌驾
未完成的公共void(@NonNull任务)
{
if(task.issusccessful())
{
Toast.makeText(SettingsActivity.this,“配置文件图像已成功保存…”,Toast.LENGTH\u SHORT.show();
loadingBar.disclose();
字符串downloadUrl=task.getResult().getDownloadUrl().toString();
RootRef.child(“用户”).child(当前用户ID).child(“图像”)
.setValue(下载URL)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务)
{
if(task.issusccessful())
{
loadingBar.disclose();
}
其他的
{
字符串消息=task.getException().toString();
Toast.makeText(SettingsActivity.this,“错误:+消息,Toast.LENGTH\u SHORT.show();
loadingBar.disclose();
}
}
});
}
其他的
{
字符串消息=task.getException().toString();
Toast.makeText(SettingsActivity.this,“错误:+消息,Toast.LENGTH\u SHORT.show();
loadingBar.disclose();
}
}
});
}
}
}
私有void更新设置(){
字符串setUserName=userName.getText().toString();
字符串setStatus=userStatus.getText().toString();
if(TextUtils.isEmpty(setUserName)){
AlertDialog.Builder=新建AlertDialog.Builder(设置Activity.this);
builder.setCancelable(true);
builder.setTitle(“错误”);
setMessage(“请写一个用户名”);
setNegativeButton(“返回”,新的DialogInterface.OnClickListener(){