2017-08-29 8 views
0

Firebaseで子の値を設定していますが、Firebaseから値を取得すると値はnullです。なぜか分からない。Android - FirebaseからのgetValueはnullを返します

database.child("User").addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        int depositInteger = 0; 
        try { 
         depositInteger = Integer.parseInt(depositText.getText().toString().trim()); 
        } catch (NumberFormatException e) { 
         if (depositText.equals("")) { 
          Toast.makeText(getActivity(), "Failed", Toast.LENGTH_SHORT).show(); 
         } 
        } 


        database.child(user.getDisplayName()).child("deposit").setValue(depositInteger); 
        Long previousDeposit = dataSnapshot.child("User").child(user.getDisplayName()).child("deposit").getValue(Long.class); 
        System.out.println("VAAAALUE: " + previousDeposit); 


       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

enter image description here

+0

がここhttps://stackoverflow.com/questions/44494430/retrieve-user-data-from-firebase-database/44497238#44497238から参照してください –

答えて

1

値を設定するには、次のような参照に直接setValue()メソッドを使用することができます。

:値を取得するには

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference userRef = rootRef.child("Users").child(user.getDisplayName()); 
userRef.child("deposit").setValue(9); //Sets the value to 9 

、次のコードを使用してください

ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     int deposit = dataSnapshot.child("deposit").getValue(Integer.class); 
     Log.d("TAG", deposit); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
userRef.addListenerForSingleValueEvent(eventListener); 

正しく表示されていますDatabaseReferenceには、Usersが含まれており、スクリーンショットに示されているようにUserが表示されています。

1

あなたが参照する必要があります子供がユーザーであり、あなたのコード内であなたがユーザーを呼び出しているあなたのデータベース構造をよります。その間違いを修正...

//Replace child tag by Users to fix the error 
database.child("Users").addValueEventListener(new ValueEventListener() { ... 
関連する問題