无法检测'addChildEventListener()'下的dataSnapshot是否为null [英] Unable to detect if dataSnapshot is null or not under 'addChildEventListener()`
问题描述
app
-category
-subCategory
-subSubCategory
我有一个 addChildEventListener()
:
pre $ m $ db $ p $ m $ db $ b public void onChildAdded(DataSnapshot dataSnapshot,String s){
if(dataSnapshot!= null){
} else {
Log.d(dataSnapshot,null );
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot,String s){
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot){
$ b @Override
public void onChildMoved(DataSnapshot dataSnapshot,String s ){
}
@Override
pub (void)onCancelled(DatabaseError databaseError){
}
});
我想在数据库为空时向用户显示警报,所以我尝试删除数据库,然后它看起来像这样:
$ $ p $ code $ app $ null
code $
但即使现在行 Log.d(dataSnapshot,null);
$ b 编辑:
我加了
mDatabase.child(category)。addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot!= null){
Log.d(dataSnapshot,AVAILABLE);
} else {
Log.d(dataSnapshot, NULL);
}
}
@Override
public void onCancelled(DatabaseError databaseError){
}
});
我得到了 D / dataSnapshot:AVAILABLE
打印出来。在数据库中没有数据的时候这怎么可能?
为什么会发生这种情况,以及当数据库为空时,如何显示用户警报?
I have set up a Firebase database for my app & it looks like this: I have an I want to show an alert to user when the database is empty so I tried it by deleting everything in database and then it looked like this: but even now the condition having line EDIT: I added and I got Why is this happening and what can I do to show users alert when the database is empty? The
这篇关于无法检测'addChildEventListener()'下的dataSnapshot是否为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!空
。但可以通过调用 dataSnapshot.exists()
来询问是否有任何数据。所以:
pre $ public $ onDataChange(DataSnapshot dataSnapshot){
if(dataSnapshot.exists()){
Log.d(dataSnapshot,AVAILABLE);
} else {
Log.d(dataSnapshot,NO DATA);
}
}
app
-category
-subCategory
-subSubCategory
addChildEventListener()
set up like this:mDatabase.child("category").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot != null) {
} else {
Log.d("dataSnapshot", "null");
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
app: null
Log.d("dataSnapshot", "null");
is not getting called.mDatabase.child("category").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null) {
Log.d("dataSnapshot", "AVAILABLE");
} else {
Log.d("dataSnapshot", "NULL");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
D/dataSnapshot: AVAILABLE
printed out. How is this possible when there is no data in the database? dataSnapshot
object itself will never be null
. But you can ask if it's got any data, by calling dataSnapshot.exists()
. So:public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
Log.d("dataSnapshot", "AVAILABLE");
} else {
Log.d("dataSnapshot", "NO DATA");
}
}