3 回答
TA贡献1803条经验 获得超6个赞
正如你写的 NullPointerException 上升
String name = dataSnapshot.child("name").getValue().toString();
错误消息说您尝试.toString()
在空对象上调用。您应该String name = dataSnapshot.child("name").getValue()
在调用.toSring()
方法之前保存结果并检查它是否为空。
TA贡献1946条经验 获得超3个赞
在尝试从dataSnapshot对象获取数据之前,您应该检查该数据是否确实存在:
mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) { //Check for existens
String name = dataSnapshot.child("name").getValue(String.class);
String image = dataSnapshot.child("image").getValue(String.class);
String status = dataSnapshot.child("status").getValue(String.class);
String thumb_image = dataSnapshot.child("thumb_image").getValue(String.class);
mName.setText(name);
mStatus.setText(status);
if (!image.equals("default")) {
Picasso.get().load(image).placeholder(R.drawable.default_avatar).into(mDisplayImage);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
});
也最好传递String.class给将getValue()其转换为 String 的方法。你不会再得到任何东西NullPointerException了。
TA贡献1829条经验 获得超7个赞
用它
store.setUrl((String) snapshot1.child("url").getValue());
store.setName((String) snapshot1.child("name").getValue());
代替
store.setUrl(snapshot1.child("url").getValue().toString());
store.setName(snapshot1.child("name").getValue().toString());
添加回答
举报