我在Android应用中使用Firebase数据库。这是子Users
的结构:
您可能会在图片中看到,有些项目的字段为imageURL
,而其他项目的字段为imageURL
。
这是我的应用程序中的一部分代码,我从imageURL
字段中获取值:
fuser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference("Users").child(fuser.getUid());
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
com.mpidesarrollo.buju.Model.User user = dataSnapshot.getValue(User.class);
username.setText(user.getUsername());
if (user.getImageURL().equals("default")){
image_profile.setImageResource(R.mipmap.ic_launcher);
} else {
Glide.with(getApplicationContext()).load(user.getImageURL()).into(image_profile);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
如果数据库中不存在imageURL字段,则在以下行出现异常:
if (user.getImageURL().equals("default")){
由于字段imageURL
不存在而导致。
如何检查该字段是否存在以避免异常?
答案 0 :(得分:2)
如何检查该字段是否存在以避免异常?
有两种方法可以解决此问题。第一个是检查imageURL
属性是否存在:
if(dataSnapshot.child("imageURL").exists()) {
//Do your logic
}
或者您可以检查imageURL
字段是否为空:
if(user.getImageURL() != null) {
//Do your logic
}
答案 1 :(得分:1)
由于变量为空,您将获得异常,并尝试检查此行上的值。
if (user.getImageURL().equals("default"))
如果您的模型中有字段,而该字段在Firebase中不可用,则它将返回null。
if(user.getImageURL()!=null) //checking field is available or not
{
// imageURL exist in the database
if (user.getImageURL().equals("default")){
image_profile.setImageResource(R.mipmap.ic_launcher);
} else {
Glide.with(getApplicationContext()).load(user.getImageURL()).into(image_profile);
}
}
else{
// imageURL doesn´t exist in the database
}