2

我整理了一个非常简单的 android 应用程序来习惯在 android 上使用 firebase。在Firebase 文档的入门部分之后,我可以毫无问题地写入数据库。但是当我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 非常简单: 这是从 firebase 获取的,这些数据是从应用程序提供的

我还创建了用于写入数据的“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;
  }
}
4

3 回答 3

3

我发现您的代码存在一些问题。

首先,您的chatMessage课程不是用 java 模式编写的。每个类名都必须以大写字母开头。

private static class ChatMessage {

您的两个构造函数也必须以大写字母开头

public ChatMessage() {  }

在你的onDataChange

ChatMessage chatMessage = dataSnapshot.getValue(ChatMessage.class);

此外,您应该使用您的ChatMessage对象获取消息字符串

String message = chatMessage.getMessage();
于 2016-07-02T19:57:59.443 回答
-1

尽量远离驼峰写法(例如“messageFrom”)。似乎 Firebase 不喜欢标签的大写字母

于 2016-11-11T17:30:44.957 回答
-1

将对象更改为String使用

String message = String.valueOf(dataSnapshot.getvalue());

代替

String message = dataSnapshot.getvaluse().toString();
于 2018-08-14T08:16:49.600 回答