2016-07-02 7 views
2

私はアンドロイドでfirebaseを使用するのに慣れるために非常にシンプルなアンドロイドアプリをまとめました。 Firebase's docsの開始部分に続いて、問題なくデータベースに書き込むことができます。しかし、getValueでそのデータをデータベースから取得すると、アプリケーションがクラッシュします。firebase dataSnapshot.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

あなたはどんな問題に直面していますか?エラーメッセージ? – adolfosrs

+0

.getValue()を実行するとアプリケーションが終了し、エラーボックスがポップアップし、残念ながらアプリが停止しています。私は最初に子のリスナーと一緒に試みて、同じ結果を得ました。 –

答えて

2

コードにいくつかの問題があります。

まず、chatMessageクラスがJavaパターンで記述されていません。すべてのクラス名は大文字で始まる必要があります。

private static class ChatMessage { 

あなたの2つのコンストラクタも大文字

public ChatMessage() { } 

で開始する必要があります。そして、あなたのonDataChange

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

でも、あなたはあなたのChatMessageオブジェクト

を使用して、メッセージ文字列を取得する必要があります
String message = chatMessage.getMessage(); 
+0

それはそれのように見えます。クラッシュは消えてしまった。それはまだ画面上にテキストを置いていないが、私は私がより良い立場にあるように見える。 –

-1

ラクダの文章から離れないようにしてください(例: "messageFrom")。 Firebaseはラベルの大文字が好きではないようです

関連する問題