编辑:我更新了retrieveData()。现在我的方法在onChildAdded()中显示我的数据库中正确数量的元素,但在我尝试将Info post分配给postSnapshot.getValue(Info.class)时收到错误。这是我的Info类没有setter,getters等
public Info(String question,String answer,String a,String b,String c,String d){
this.question=question;
this.a=a;
this.b=b;
this.c=c;
this.d=d;
this.answer=answer;
}
public Info(){
}
}
public void retrieveData(){
Log.e("burdayım sa","saaaaaaaaaaa");
databaseReference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Log.e("Count " ,""+dataSnapshot.getChildrenCount());
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Info post = postSnapshot.getValue(Info.class);
Log.e("Get Data", post.getQuestion());
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Log.e("Count " ,""+dataSnapshot.getChildrenCount());
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
Info post = postSnapshot.getValue(Info.class);
Log.e("Get Data", post.getQuestion());
}
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("The read failed: " ,databaseError.getMessage());
}
});
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.e("The read failed: " ,firebaseError.getMessage());
}
});
}
这是错误:com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.example.sahilliolu.rqagame.Info 类型
所以,这是我接收数据的代码。我在前一个活动中处理身份验证,我可以通过此活动向我的数据库写入内容(我没有使用firebase对象)但是当我尝试获取一个对象时,它会拒绝我的权限。我怎么解决这个问题?以下是我写入db的方法。
firebaseAuth=FirebaseAuth.getInstance();
if(firebaseAuth.getCurrentUser()==null){
finish();
startActivity(new Intent(this,LoginActivity.class));
}
FirebaseUser user=firebaseAuth.getCurrentUser();
databaseReference= FirebaseDatabase.getInstance().getReference().child("questions");
Info info=new Info(question,answer,a,b,c,d);
newDatabaseReference=databaseReference.push();
newDatabaseReference.setValue(info);
Toast.makeText(getApplicationContext(),"Your question is created",Toast.LENGTH_SHORT).show();
答案 0 :(得分:0)
您正在使用旧版SDK和新SDK:
// legacy
firebase.setAndroidContext(this);
firebase=new Firebase("https://mylink");
// new
FirebaseUser user=firebaseAuth.getCurrentUser();
databaseReference= FirebaseDatabase.getInstance().getReference().child("questions");
这不是好习惯,可能是问题的根源。
您应该专门使用新的SDK。从构建依赖项中删除此行并更新代码:
compile 'com.firebase:firebase-client-android:2.X.X'
Upgrade Guide很有用。
答案 1 :(得分:0)
你指的是错误的节点,它不包含你所需的变量,只包含一个字符串(可能只是个问题)