我尝试使用毕加索将图像从Firebase加载到CircleImageView中 这是代码的一部分
getUserDataRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String name =dataSnapshot.child("UserName").getValue().toString();
String status =dataSnapshot.child("Status").getValue().toString();
String profile_image =dataSnapshot.child("ProfileImage").getValue().toString();
String thumb_image =dataSnapshot.child("thumb_Profile").getValue().toString();
UserName.setText(name);
Status.setText(status);
Picasso.with(Settings.this).load(profile_image).placeholder(R.drawable.profile_image).into(profile_imageCirc);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Firebase中的每件事都可以,但是该图像不会出现在CircleImageView中 和这样的运行:
D/libc-netbsd: [getaddrinfo]: hostname=chatit-e11ac.firebaseio.com; servname=(null); netid=0; mark=0
D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
D/libc-netbsd: [getaddrinfo]: hostname=chatit-e11ac.firebaseio.com; servname=(null); netid=0; mark=0
D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=1024; ai_family=0
D/libc-netbsd: getaddrinfo: chatit-e11ac.firebaseio.com get result from proxy gai_error = 0
D/libc-netbsd: [getaddrinfo]: hostname=chatit-e11ac.firebaseio.com; servname=(null); netid=0; mark=0
D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
E/NativeCrypto: ssl=0x7f7712c900 cert_verify_callback x509_store_ctx=0x7f61cfd410 arg=0x0
E/NativeCrypto: ssl=0x7f7712c900 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
E/MultiWindowProxy: getServiceInstance failed!
Application terminated.
这是整个课程:
public class Settings extends AppCompatActivity {
private TextView UserName,Status;
private Button ChangUserName,ChangeStatus;
private CircleImageView profile_imageCirc;
private DatabaseReference getUserDataRef;
private FirebaseAuth mFirebaseAuth;
private final static int Gallary_Pick=1;
private StorageReference storeProfileImageStorageRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
//initial firebase Refrence
mFirebaseAuth=FirebaseAuth.getInstance();
String UserId=mFirebaseAuth.getCurrentUser().getUid();
getUserDataRef= FirebaseDatabase.getInstance().getReference().child("Users").child(UserId);
storeProfileImageStorageRef= FirebaseStorage.getInstance().getReference().child("profile_images");
FindView();
//add Event Listener to the reference to get the value from data base
getUserDataRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String name =dataSnapshot.child("UserName").getValue().toString();
String status =dataSnapshot.child("Status").getValue().toString();
String profile_image =dataSnapshot.child("ProfileImage").getValue().toString();
String thumb_image =dataSnapshot.child("thumb_Profile").getValue().toString();
UserName.setText(name);
Status.setText(status);
Picasso.with(Settings.this).load(profile_image).placeholder(R.drawable.profile_image).into(profile_imageCirc);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
//let the user choose image from his phone images
ChangUserName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent,Gallary_Pick);
}
});
}
private void FindView() {
UserName=(TextView) findViewById(R.id.user_name);
Status=(TextView) findViewById(R.id.status);
ChangeStatus=(Button)findViewById(R.id.Change_status);
ChangUserName=(Button)findViewById(R.id.Change_user_name);
profile_imageCirc=(CircleImageView)findViewById(R.id.profile_image);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(resultCode==RESULT_OK&&requestCode==Gallary_Pick&&data!=null){
Uri image=data.getData();
// start picker to get image for cropping and then use the image in cropping activity
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) {
Uri resultUri = result.getUri();
String Uid=mFirebaseAuth.getCurrentUser().getUid();
StorageReference filePath=storeProfileImageStorageRef.child(Uid+".jpg");
filePath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(@NonNull UploadTask.TaskSnapshot taskSnapshot) {
String downloadUrl= taskSnapshot.getMetadata().getReference().getDownloadUrl().toString();
getUserDataRef.child("ProfileImage").setValue(downloadUrl).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(Settings.this,"Image Update Successfully", Toast.LENGTH_SHORT).show();
}
});
Toast.makeText(Settings.this,"Saved", Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(Settings.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}
}}