【问题标题】:Firebase database conflicting getters for name: getAddressFirebase 数据库与名称的 getter 冲突:getAddress
【发布时间】:2016-11-24 07:23:34
【问题描述】:

目前正在试用 Google 的 Places API,同时尝试将 Place 推送到我的 Firebase 数据库。下面的代码尝试这样做,但在调用时出错。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == PLACE_PICKER_REQUEST) {
        if (resultCode == RESULT_OK) {
            Place place = PlacePicker.getPlace(this, data);
            String toastMsg = String.format("Place: %s", place.getName());
            Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();

            String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
            DatabaseReference userRef = database.getReference("users/" + userUid);

            userRef.setValue(place);
        }
    }
}

我得到的错误如下:

11-23 18:34:24.874 13155-13155/io.app.roomie E/AndroidRuntime: FATAL EXCEPTION: main
    Process: io.app.roomie, PID: 13155
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {io.app.roomie/io.app.roomie.MainActivity}: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getAddress
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4089)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
    at android.app.ActivityThread.-wrap20(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    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)
     Caused by: com.google.firebase.database.DatabaseException: Found conflicting getters for name: getAddress
    at com.google.android.gms.internal.zzamy$zza.<init>(Unknown Source)
    at com.google.android.gms.internal.zzamy.zzj(Unknown Source)
    at com.google.android.gms.internal.zzamy.zzca(Unknown Source)
    at com.google.android.gms.internal.zzamy.zzbz(Unknown Source)
    at com.google.firebase.database.DatabaseReference.zza(Unknown Source)
    at com.google.firebase.database.DatabaseReference.setValue(Unknown Source)
    at io.app.roomie.MainActivity.onActivityResult(MainActivity.java:81)
    at android.app.Activity.dispatchActivityResult(Activity.java:6932)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132) 
    at android.app.ActivityThread.-wrap20(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    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) 

对代码格式感到抱歉。否则我无法让它工作。

【问题讨论】:

  • 这个 Place 类是否来自 Places API?
  • 是的,来自com.google.android.gms.location.places
  • 那种解释。该类并不意味着直接发送到 Firebase,您应该创建自己的 POJO 类,复制数据并保存。
  • 哦,对了,这很有道理。谢谢。
  • @vzsg 想把它作为答案发布吗?否则我们中的一个人将不得不找到一个副本。 :-/

标签: android firebase firebase-realtime-database


【解决方案1】:

com.google.android.gms.location.places.Place 类不能直接保存到 Firebase 中。

您应该编写一个简单的 POJO 类,其中只包含您需要的 Place 字段,复制数据,并将这个简单的对象保存到数据库中。

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 2020-06-18
    • 2017-12-05
    相关资源
    最近更新 更多