2017-03-10 11 views
0

Firebaseオブジェクトがデータベースに書き込まれません。 エラーは何ですか。アクティビティはエラーなしで実行されており、firebaseデータベースに書き込まれた値を取得していません。何Firebaseオブジェクトがデータベースに書き込まれない

これを行うには、

package com.shaan.homely; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Toast; 
import com.google.firebase.database.ChildEventListener; 
import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 
import com.shaan.homely.pojo.User; 

import java.util.HashMap; 
import java.util.Map; 

public class Empty extends AppCompatActivity { 

FirebaseDatabase firebaseDatabase; 
DatabaseReference myref; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_empty); 

    User user = new User("shaan","[email protected]","9718460374"); 
    myref = FirebaseDatabase.getInstance().getReference(); 

    String userId = myref.push().getKey(); 
    Map<String,User> data = new HashMap<String,User>(); 
    data.put(userId,user); 
    //Toast.makeText(getApplicationContext(),myref.toString(),Toast.LENGTH_LONG).show(); 
    // creating user object 
    myref.child("users").child(userId).setValue(data); 

    myref.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      User user = dataSnapshot.getValue(User.class); 
      Toast.makeText(getApplicationContext(),user.getEmail()+user.getName(),Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 
     } 
    }); 

    myref.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      User user = dataSnapshot.getValue(User.class); 
      Toast.makeText(getApplicationContext(),user.getEmail()+user.getName(),Toast.LENGTH_LONG).show(); 
     } 

     @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) { 
      Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 

     } 
    }); 

} 
} 

私のjavaファイルであり、これはあなたがルートDBに値をプッシュして、子供のユーザーにそれを探す

package com.shaan.homely.pojo; 

import com.google.firebase.database.IgnoreExtraProperties; 

@IgnoreExtraProperties 
public class User { 

public String name; 
public String email; 
public String mobile; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public String getMobile() { 
    return mobile; 
} 

public void setMobile(String mobile) { 
    this.mobile = mobile; 
} 


// Default constructor required for calls to 
// DataSnapshot.getValue(User.class) 
public User() { 
} 

public User(String name, String email, String mobile) { 
    this.name = name; 
    this.email = email; 
    this.mobile = mobile; 
} 
} 
+0

通常、それはパラメータを持っている、 'Firebase'ルールをチェック'「.WRITE」 : "auth!= null"。 '' .write ":true'と定義することで、権限なしでデータベースに書き込むことができます。 –

+0

私はすでにそれを定義しています.. –

答えて

0

私のユーザークラスです'あなたの最初の基準は、新しいエントリが作成されるようにしたい子「ユーザ」、を指している必要があります

myref = FirebaseDatabase.getInstance().getReference().child("users"); 

String userId = myref.push().getKey(); 
Map<String,User> data = new HashMap<String,User>(); 
data.put(userId,user); 
//Toast.makeText(getApplicationContext(),myref.toString(),Toast.LENGTH_LONG).show(); 
// creating user object 
myref.child(userId).setValue(data); 

UPDATE:

あなたはまた、ハッシュマップを推進しているが、その後、Userクラスを読み込みます。私はあなたの代わりにハッシュマップを作成するUserクラスにIDを追加提案:あなたのコードで

public class User { 
    ... 
    private String userId; 

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 
} 

String userId = myref.push().getKey(); 
user.setUserId(userId); 

// creating user object 
myref.child("users").child(userId).setValue(user); 
+0

あなたが言ったことは? addValueEventListenerは、トーストで値を印刷したときにNullを返しました?? –

+0

私は自分の答えを更新しました。 –

+0

データベース内にまだ更新がありません。これは私のfirebase dbスナップショットです。 –

関連する問題