2017-10-06 7 views
0

)dataSnapshotは「addChildEventListener(下nullであるかどうかを検出することができません、それは次のようになります。私は私のアプリ&ためFirebaseデータベースを設定している `

app 
-category 
    -subCategory 
    -subSubCategory 

私はこのように設定addChildEventListener()を持っています。

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");の状態が呼び出されていません。

EDIT:

私は

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を得ました。データベースにデータがない場合、これはどのように可能ですか?

なぜこのようなことが起こるのですか。データベースが空のときにユーザーに警告を表示するにはどうすればよいですか。

+0

https://stackoverflow.com/questions/38551013/android-firebase-retrieve-data-from-child-node –

+0

@NirmalVaghasiya? –

答えて

1

dataSnapshotオブジェクト自体は決してnullになりません。しかし、データがあるかどうかは、dataSnapshot.exists()に電話することで調べることができます。だから、:あなたが参照しているされている

public void onDataChange(DataSnapshot dataSnapshot) { 
    if (dataSnapshot.exists()) { 
     Log.d("dataSnapshot", "AVAILABLE"); 
    } else { 
     Log.d("dataSnapshot", "NO DATA"); 
    } 
} 
+0

私は 'dataSnapshot.getValue()== null'を試みました。指摘してくれてありがとう。 –

+2

私の答えで 'dataSnapshot.exists()'を使わないのはなぜですか? –

関連する問題