Android应用数据可写入Firebase Realtime Database但点击按钮后崩溃求助
搞定Firebase写入后崩溃的问题
嘿,我从你的Logcat错误信息里直接揪出问题根源了:你的User类缺了个无参构造函数,这可是Firebase Realtime Database反序列化对象时的硬性要求哦。
为啥会崩?
Firebase把数据库里的JSON转成Java对象的时候,得先调用类的无参构造函数创建实例,再通过反射把字段值填进去。你现在的User类只写了带三个参数的构造函数,没给无参的,Firebase没法完成这个步骤,直接就抛出DatabaseException导致崩溃了。
怎么修?
改改你的User类,加上无参构造函数就行,顺带把字段改成private再加个getter(虽然Firebase能直接读public字段,但这是更规范的写法):
public class User { private String name; private String email; private String address; // Firebase必须要的无参构造函数 public User() { // 空实现就行,不用写内容 } // 你原来的带参构造函数 public User(String name, String email, String address) { this.name = name; this.email = email; this.address = address; } // 推荐加上getter方法 public String getName() { return name; } public String getEmail() { return email; } public String getAddress() { return address; } }
额外提醒
开发阶段可以先把Firebase数据库规则设成允许读写(方便调试):
{ "rules": { ".read": true, ".write": true } }
不过上线前一定要改成安全规则,比如只让认证过的用户访问,别留安全隐患哈。
改完之后再试试,保存数据后应用就不会崩溃啦!
内容的提问来源于stack exchange,提问作者Marco Polo
相关产品推荐
相关产品推荐

