我有一个导航抽屉设置。我在抽屉上的片段之一允许用户上传图像,然后显示图像。图像上载并显示正常,但如果用户离开片段并返回图像,则视图将不加载任何内容,甚至不显示占位符图像,而是显示为空白。相同的图像也显示在导航抽屉中,但是直到用户离开应用程序并返回占位符图像后才会更新。
个人资料片段
mUsersDB.get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists()) {
String name = documentSnapshot.getString(KEY_NAME);
mName.setText(name);
String status = documentSnapshot.getString(KEY_STATUS);
mStatus.setText(status);
String image = documentSnapshot.getString(KEY_IMAGE);
if (mDisplayImage.getDrawable() == null){
mDisplayImage.setImageResource(R.drawable.default_no_profile_picture);
} else {
Glide.with(getActivity()).load(image).into(mDisplayImage);
}
FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
} else {
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
导航抽屉:
mUsersDB.get()
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists()) {
String name = documentSnapshot.getString(KEY_NAME);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View headerView = navigationView.getHeaderView(0);
TextView navUsername = (TextView) headerView.findViewById(R.id.menu_userName);
navUsername.setText(name);
String image = documentSnapshot.getString(KEY_IMAGE);
ImageView navImage = headerView.findViewById(R.id.menu_image);
Glide.with(getApplicationContext())
.load(image)
.into(navImage);
我在网上发现他们正在谈论分离和重新连接监听器,但是我没有监听器设置,所以我不明白我将如何实现它,我也发现使用.setdrawerlistner,但是已经弃用了。在此失去任何帮助,将不胜感激
答案 0 :(得分:0)
我使用错误的方式,我只是简单地使用了带占位符的占位符,并使用了请求选项
RequestOptions options = new RequestOptions()
.placeholder(R.drawable.no_profile_picture)
.error(R.drawable.no_profile_picture)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.priority(Priority.HIGH);
ImageView navImage = headerView.findViewById(R.id.menu_image);
Glide.with(getApplicationContext())
.load(image)
.apply(options)
.into(navImage);