2017-03-27 79 views
0

我试图使用Firebase的文档指南从我的数据库记录一个简单的字符串,但我收到此错误: com.google .firebase.database.DatabaseException:未能类型的java.util.HashMap的值转换为字符串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) { 

      } 
     }); 



    } 



} 

感谢任何形式的帮助!

的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 value = dataSnapshot.getValue(String.class); 

您要求String但在火力地堡节点中包含一个HashMap。确保您位于正确的节点或数据格式正确。

+0

不确定节点是什么,将我的logcat添加到帖子中。 – Skity

+0

感谢logcat。我的意思是_node_是你的'DatabaseReference',它指向Firebase的JSON数据库的“树”结构中的“节点”。基本上,记录你的'DatabaseReference'以确保你在数据库的正确位置。如果是这样,您还将能够看到该引用的数据是否是您希望的数据。就像'Log.d(LOG_TAG,“Reference:”+ myRef.toString());'然后你可以点击你的logcat中的URL。 – Sunshinator

0

想通了,我需要添加孩子到DatabaseReference myRef = database.getReference(),因为我指的是整个数据库。

相关问题