2

Androidでfirebaseを使用することに慣れるために、非常にシンプルなAndroidアプリをまとめました。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 {

2 つのコンストラクターも大文字で始まる必要があります

public ChatMessage() {  }

そしてあなたのonDataChange

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

また、ChatMessageオブジェクトを使用してメッセージ文字列を取得する必要があります

String message = chatMessage.getMessage();
于 2016-07-02T19:57:59.443 に答える