我已经整理了一个非常简单的Android应用程序,习惯在android上使用firebase。在Firebase's docs的入门部分之后,我能够写入数据库而没有任何问题。但是,当我从数据库中使用getValue
检索该数据时,应用程序崩溃了。
我尝试使用以下代码读取数据库:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");
ValueEventListener chatMessageListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
TextView messages = (TextView) findViewById(R.id.old_messages);
chatMessage ChatMessage = dataSnapshot.getValue(chatMessage.class);
String message = dataSnapshot.toString();
}
@Override
public void onCancelled(DatabaseError error) {
//....
}
};
myRef.addValueEventListener(chatMessageListener);
JSON非常简单: this is taken from firebase, this data was provided from the app
我还创建了" chatMessage"那用于写数据:
@IgnoreExtraProperties
private static class chatMessage {
public String message;
public String messageFrom;
public String messageTo;
public chatMessage() { }
public chatMessage(String message, String messageFrom, String messageTo) {
this.message = message;
this.messageFrom = messageFrom;
this.messageTo = messageTo;
}
public String getMessage(){
return message;
}
public String getMessageFrom(){
return messageFrom;
}
public String getMessageTo(){
return messageTo;
}
}
答案 0 :(得分:2)
我发现您的代码存在一些问题。
首先,你的chatMessage
类没有用java模式编写。每个班级名称必须以大写字母开头。
private static class ChatMessage {
你的两个构造函数也必须以大写字母
开头public ChatMessage() { }
在onDataChange
ChatMessage chatMessage = dataSnapshot.getValue(ChatMessage.class);
另外,您应该使用ChatMessage
对象
String message = chatMessage.getMessage();
答案 1 :(得分:-1)
尽量远离camelCase写作(例如“messageFrom”)。似乎Firebase不喜欢标签的大写字母
答案 2 :(得分:-1)
使用
将对象更改为atrb_paramCfg_ts atrb_paramCfg_s[] =
{
{0,{ClassCfg1_s}},
{0,{ClassCfg2_s}},
};
String
代替
String message = String.valueOf(dataSnapshot.getvalue());