【问题标题】:How to retrieve data from fire base to android text view?如何从firebase检索数据到android文本视图?
【发布时间】:2019-03-11 23:23:21
【问题描述】:

我正在做一个 iot 项目,我想将数据从 firebase 传输到我的 android 应用程序的 textview 帮帮我!!

这是我的代码

code

Firebase JSON

{
  "Water_level" : 10,
  "valve_1" : 0,
  "valve_2" : 0
}

这是我的 logcat 错误

10-07 13:49:26.433 25077-25077/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                   Process: com.blogspot.techyfruit360.watercontroller, PID: 25077
                                                   com.google.firebase.database.DatabaseException: Failed to convert value of type java.lang.Long to String
                                                       at com.google.android.gms.internal.zzelw.zzb(Unknown Source:663)
                                                       at com.google.android.gms.internal.zzelw.zza(Unknown Source:0)
                                                       at com.google.firebase.database.DataSnapshot.getValue(Unknown Source:10)
                                                       at com.blogspot.techyfruit360.watercontroller.Main2Activity$1.onDataChange(Main2Activity.java:40)
                                                       at com.google.android.gms.internal.zzegf.zza(Unknown Source:13)
                                                       at com.google.android.gms.internal.zzeia.zzbyc(Unknown Source:2)
                                                       at com.google.android.gms.internal.zzeig.run(Unknown Source:65)
                                                       at android.os.Handler.handleCallback(Handler.java:790)
                                                       at android.os.Handler.dispatchMessage(Handler.java:99)
                                                       at android.os.Looper.loop(Looper.java:164)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6518)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

【问题讨论】:

  • 你得到日志中的值了吗?
  • 请用这些图片中的实际文本替换图片链接。然后,您可以使用 Stack Overflow 编辑器中的控件对其进行格式化。您可以通过单击 Firebase Database console 中的“导出 JSON”链接以文本形式获取 JSON。

标签: android firebase-realtime-database data-retrieval


【解决方案1】:

onDataChange中删除你写的所有东西,试试下面的

myRef.addListenerForSingleValueEvent( new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot){
        if(dataSnapshot.exists()){
            Map<String, Object> objectMap = (HashMap<String, Object>) dataSnapshot.getValue();
            String value = (String) objectMap.get( "Water_level" );
            Log.d("Water_level", "Value is: " + value);
            textView.setText(value);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
} );

这应该可以解决您的问题。确保您的数据库引用设置正确。

【讨论】:

    【解决方案2】:

    无法将java.lang.Long 类型的值转换为String

    在您的onDataChange() 中,

    String value = datasnapshot.getValue(String.class)
    

    它将long 值转换为String,这就是您收到错误的原因。

    试试这个:

    String waterLevel = dataSnapshot.child("Water_level").getValue(String.class);
    textView.setText(waterLevel)
    

    或者只使用toString()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多