【问题标题】:Android application crash using Firebase Realtime Database in Android Studio IDE [duplicate]在 Android Studio IDE 中使用 Firebase 实时数据库的 Android 应用程序崩溃 [重复]
【发布时间】:2019-12-16 00:27:30
【问题描述】:

我正在制作一个连接到 Firebase 的 Android 应用,并在其中使用实时数据库。

问题是我在模拟器上安装的应用程序在用户登录后不断崩溃。

我认为这是一个与应用程序无法从数据库中检索用户数据有关的问题。我检查了 Firebase 文档,但没有任何帮助。我所有的 Gradle 文件都已正确设置和同步。我真的被卡住了,不知道该怎么办。

请帮助我,我将不胜感激。

PS 这是应用崩溃时 Android Studio 在 RUN SECTION 中显示的内容

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.e.youdemo, PID: 26450
    com.google.firebase.database.DatabaseException: No properties to serialize found on class com.e.youdemo.UserProfile
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.<init>(com.google.firebase:firebase-database@@17.0.0:530)
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-database@@17.0.0:312)
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@17.0.0:413)
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@17.0.0:214)
        at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database@@17.0.0:79)
        at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@17.0.0:212)
        at com.e.youdemo.Menu$1.onDataChange(Menu.java:91)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@17.0.0:75)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@17.0.0:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@17.0.0:55)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

编辑

这是从日志中报告的“菜单活动”第 91 行开始的方法

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    UserProfile userProfile = dataSnapshot.getValue (UserProfile.class);
    CurrentUserName.setText (Objects.requireNonNull (userProfile).getName ());
    CurrentUserAge.setText (MessageFormat.format ("{0} anni", userProfile.getAge ()));
    CurrentUserGender.setText (userProfile.getGender ());
    CurrentUserWeight.setText (MessageFormat.format ("{0} kg", userProfile.getWeight ()));
    CurrentUserHeight.setText (MessageFormat.format ("{0} cm", userProfile.getHeight ()));
}

编辑

package com.e.youdemo;

import java.io.Serializable;

public class UserProfile implements Serializable {
    private String Name;
    private String Age;
    private String Gender;
    private String Weight;
    private String Height;

    public UserProfile () {}

    UserProfile(String Name, String Age, String Gender, String Weight, String Height) {
        this.Name = Name;
        this.Age = Age;
        this.Gender = Gender;
        this.Weight = Weight;
        this.Height = Height;
    }

    String getName() {
        return Name;
    }

    String getAge() {
        return Age;
    }

    String getGender() {
        return Gender;
    }

    String getWeight() {
        return Weight;
    }

    String getHeight() {
        return Height;
    }

    void setName(String name) {
        Name = name;
    }

    void setAge(String age) {
        Age = age;
    }

    void setGender(String gender) {
        Gender = gender;
    }

    void setWeight(String weight) {
        Weight = weight;
    }

    void setHeight(String height) {
        Height = height;
    }
}

【问题讨论】:

  • 欢迎堆栈溢出。为了让人们能够帮助您,您确实需要共享您的代码。请编辑您的问题,也许看看how to ask a question
  • 请添加你UserProfile的内容。也请回复@AlexMamo
  • 在下一个编辑中有 UserProfile 类的全部代码,谢谢@AlexMamo
  • 请添加 FirebaseDatabase userProfile 节点数据
  • 请将您的数据库结构添加为 JSON 文件或至少作为屏幕截图。

标签: android firebase firebase-realtime-database


【解决方案1】:

替换

public class UserProfile implements Serializable {
    private String Name;
    private String Age;
    private String Gender;
    private String Weight;
    private String Height;
}

public class UserProfile implements Serializable {
    private String name;
    private String age;
    private String gender;
    private String weight;
    private String height;
}

【讨论】:

  • 抱歉不行
  • 请在public void onDataChange(@NonNull DataSnapshot dataSnapshot)中提供您在dataSnapshot中获得的数据
  • Firebase 需要公共 getter/setter 方法
  • 谢谢,现在它工作得很好!
猜你喜欢
  • 1970-01-01
  • 2017-03-26
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
相关资源
最近更新 更多