2017-03-27 10 views
0

firebaseのドキュメントガイドを使用してデータベースから単純な文字列をログに記録しようとしていますが、このエラーが表示されます: com.google .firebase.database.DatabaseExceptionは:ヘルプの任意の並べ替えのためのcom.google.firebase.database.DatabaseException:型java.util.HashMapの値を文字列に変換できません

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 

import com.google.firebase.database.DataSnapshot; 
import com.google.firebase.database.DatabaseError; 
import com.google.firebase.database.DatabaseReference; 
import com.google.firebase.database.FirebaseDatabase; 
import com.google.firebase.database.ValueEventListener; 



public class MainActivity extends AppCompatActivity { 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     FirebaseDatabase database = FirebaseDatabase.getInstance(); 
     DatabaseReference myRef = database.getReference("brands"); 

     myRef.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       String value = dataSnapshot.getValue(String.class); 

       Log.d("TAG", "Value is: " + value); 
//; 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 



    } 



} 

ありがとう:これは私のコードである文字列

に型のjava.util.HashMapの値を変換できませんでした!

logcat:

03-27 18:58:12.593 574-574/com.ofir.motoinfo E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: com.ofir.motoinfo, PID: 574 
                   com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String 
                    at com.google.android.gms.internal.zzbtg.zzaF(Unknown Source) 
                    at com.google.android.gms.internal.zzbtg.zzb(Unknown Source) 
                    at com.google.android.gms.internal.zzbtg.zza(Unknown Source) 
                    at com.google.firebase.database.DataSnapshot.getValue(Unknown Source) 
                    at com.ofir.motoinfo.MainActivity$1.onDataChange(MainActivity.java:33) 
                    at com.google.android.gms.internal.zzbpx.zza(Unknown Source) 
                    at com.google.android.gms.internal.zzbqx.zzZS(Unknown Source) 
                    at com.google.android.gms.internal.zzbra$1.run(Unknown Source) 
                    at android.os.Handler.handleCallback(Handler.java:751) 
                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                    at android.os.Looper.loop(Looper.java:154) 
                    at android.app.ActivityThread.main(ActivityThread.java:6119) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

答えて

0

あなたはlogcatを提供していませんでしたが、エラーが行である:あなたがStringを要求している

String value = dataSnapshot.getValue(String.class); 

が、Firebase内のノードがHashMapが含まれています。適切なノードにいること、またはデータが適切にフォーマットされていることを確認してください。

+0

ノードが何であるかわからない、私のlogcatを投稿に追加しました。 – Skity

+0

logcatをありがとう。私が_node_を意味するのは、FirebaseのJSONデータベースである "tree"構造の "node"を指す、あなたの 'DatabaseReference'です。基本的には、データベースの正しい場所にいることを確認するために 'DatabaseReference'を記録してください。もしそうなら、その参照のデータがあなたが望むデータであるかどうかを見ることもできます。 'Log.d(LOG_TAG、" Reference: "+ myRef.toString());'のようなものです。その後、logcatのURLをクリックすることができます。 – Sunshinator

0

私は子供全体をDatabaseReference myRef = database.getReference()に追加する必要がありました。データベース全体を参照していたためです。

関連する問題