类缺少一个没有参数的构造函数 – 但是我提供了一个没有参数的构造函数
我正在尝试从Firebase登录后检索用户的信息。 我有偷偷的怀疑,这个错误实际上不是我的问题 – 而且必须处理这个事实,我使用ServerValue.Timestamp
来存储用户注册时的日期/时间(因为我试图把日期退回去了,我的class级也不知道该怎么办)。 我的数据库看起来像这样:
登录时,这是我用来获取用户信息的代码
//grab user's name from firebase //drill down to specific user val usersRef = FirebaseDatabase.getInstance().getReference("Users") val loggedInUserRef = usersRef.child(user.uid) //specific to the logged in user val dataRef = loggedInUserRef.child("UserInfo") //get logged in user info //attach listener dataRef.addListenerForSingleValueEvent(object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // Get Post object and use the values to update the UI val user_data = dataSnapshot.getValue(User::class.java) Log.w(TAG, dataSnapshot.value.toString()) //add relevant data to shared preferences prefs.userName = "$user_data.FirstName $user_data.LastName" } override fun onCancelled(databaseError: DatabaseError) {} })
我有我的用户类在一个单独的文件在这里:
package androidproject.project_rc data class User( var FirstName: String = "", var LastName: String = "", var Email: String = "", var Password: String = "", var DateJoined: Any )
围绕这一行: val user_data = dataSnapshot.getValue(User::class.java)
是哪里错误被抛出 – 什么给?
看看这里的文档
当使用snap.getValue(Class)getter时,类应该有一个0参数的构造函数。
所以不幸的是你不能用这种方式使用数据类。 只要重写你的课程
class User(){ var firstName: String = "" var lastName: String = "" var email: String = "" var password: String = "" var dateJoined: Long = 0L }
您可能需要使用小写variables名称,因为这是惯例。 此外,你可以避免任何dateJoined,因为我认为它是一个UTC时间戳。
如果存在该名称的setter / public字段,则firebase sdk将检查每个数据库密钥,如果存在,请设置它。 Kotlin自动生成setter和getters,所以你只需要确保成员的名字与数据库中的键相同。
即使其中一位开发者曾经说过(这似乎并没有出现在文档中),SDK将尝试访问多种命名风格。 这是相当模糊的,所以最好确保匹配数据库键。
不知道Kotlin(从未使用过),但我认为Pojo字段名称必须与Firebase条目名称匹配
喜欢:
var Password:String =“”,
有大写字母“P”,但在您的Firebase中,“密码”拼写为小写。
如果所有的主要构造函数参数都有默认值,Kotlin也会生成一个无参数的构造函数。 在你的情况DateJoined
缺少一个。 所以
data class User( var FirstName: String = "", var LastName: String = "", var Email: String = "", var Password: String = "", var DateJoined: ... = ... )
(我不知道FireBase中允许哪些types的字段,但是可能不是一个,如果是的话,效率就不高。)
- 在kotlin中创建一个parcelable对象
- 如何使用Android上的Kotlin从url解析JSON?
- 哪个主题属性更改EditText错误消息的文本颜色
- Kotlin readBytes()永远不会完成
- Kotlin通用边界
- 在android studio中用c ++编写应用程序?
- 无法让dokka在gradle / android项目上生成kotlin文档
- “Subject.asObservable()”和主题本身“主题”之间的任何区别?
- android – 运行应用程序失败,错误“com.android.builder.dexing.DexArchiveMergerException:无法合并dex’