firebase dataSnapshot.getValue()使android应用程序崩溃
我已经组装了一个非常简单的android应用程序来习惯在android上使用firebase。在开始部分之后,我能够毫无问题地写入数据库。但是当我用firebase dataSnapshot.getValue()使android应用程序崩溃,android,firebase,firebase-realtime-database,getvalue,Android,Firebase,Firebase Realtime Database,Getvalue,我已经组装了一个非常简单的android应用程序来习惯在android上使用firebase。在开始部分之后,我能够毫无问题地写入数据库。但是当我用getValue从数据库检索数据时,应用程序崩溃了 我尝试使用以下代码读取数据库: FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("message"); ValueEventLis
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非常简单:
我还创建了用于写入数据的“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;
}
}
我发现你的代码有一些问题 首先,您的
chatMessage
类不是用java模式编写的。每个类名必须以大写字母开头
private static class ChatMessage {
您的两个构造函数也必须以大写字母开头
public ChatMessage() { }
在您的onDataChange
ChatMessage chatMessage = dataSnapshot.getValue(ChatMessage.class);
此外,您应该使用ChatMessage
对象获取消息字符串
String message = chatMessage.getMessage();
尽量避免写camelCase(例如“messageFrom”)。Firebase似乎不喜欢标签的大写字母使用
String message = String.valueOf(dataSnapshot.getvalue());
而不是
String message = dataSnapshot.getvaluse().toString();
你面临什么问题?有任何错误消息吗?当.getValue()执行时,应用程序将关闭,错误框弹出,并表示应用程序已停止。我首先尝试了一个儿童听众,得到了同样的结果。看起来就是这样。撞击声消失了。它还没有把文本放在屏幕上,但看起来我在某种程度上比以前更好了。