Open keyejxptwn opened 5 years ago
Android 9.0+会出现该问题,直接闪退,9.0以下未发现该问题
能把你的实体类也贴出来看一下吗
是构造方法额问题,LitePal默认使用无参构造方法
LitePal不是默认使用无参数构造方法,而是会找寻最合适的一个构造方法,如果找不到就会抛出上面的异常。但是我很难能理解为什么会找不到最合适的构造方法,因为正常情况下一个类必然会有构造方法。
所以我才说让你贴一下你的实体类到底是定义成什么样子的,主要是便于我定位问题。当然这个问题已经过去这么久了,你找不到当初的代码也正常。我在新版的LitePal当中在这处地方加了很多日志,如果以后再发生这样的问题,我就能明白为什么会找不到合适的构造方法。
那么这个问题我就先关闭掉了。
我也遇到了这个问题,要怎么修改实体类呢
我的实体类
data class Province(
val adcode: String,
val center: String,
val citycode: Any,
val districts: List
我也遇到了这个问题,要怎么修改实体类呢 我的实体类 data class Province( val adcode: String, val center: String, val citycode: Any, val districts: List, val level: String, val name: String ) : LitePalSupport() 调用findAll就报错了 需要给参数添加默认值
我先将这个问题重新打开,这个问题其实很尴尬,是个Kotlin的非空机制和反射初始化时暂时置空的机制冲突导致的。
LitePal反射初始化的机制是有瑕疵的,后面我准备改成类似GSON的反射初始化机制,到时候可以规避掉现在遇到的这种情况。
如果是想要通过修改实体类的方式来解决这个问题,一个办法是你说的给参数添加默认值,另一个办法就是给这些类型的后面加上?,让它们可以为空。
org.litepal.exceptions.LitePalSupportException: Attempt to invoke virtual method 'java.lang.Class[] java.lang.reflect.Constructor.getParameterTypes()' on a null object reference at org.litepal.crud.DataHandler.query(DataHandler.java:154) at org.litepal.crud.QueryHandler.onFind(QueryHandler.java:159) at org.litepal.FluentQuery.find(FluentQuery.java:234) at org.litepal.FluentQuery$1.run(FluentQuery.java:253) at java.lang.Thread.run(Thread.java:764) Caused by: org.litepal.exceptions.LitePalSupportException: Attempt to invoke virtual method 'java.lang.Class[] java.lang.reflect.Constructor.getParameterTypes()' on a null object reference at org.litepal.crud.DataHandler.createInstanceFromClass(DataHandler.java:636) at org.litepal.crud.DataHandler.query(DataHandler.java:139) at org.litepal.crud.QueryHandler.onFind(QueryHandler.java:159) at org.litepal.FluentQuery.find(FluentQuery.java:234) at org.litepal.FluentQuery$1.run(FluentQuery.java:253) at java.lang.Thread.run(Thread.java:764) Caused by: org.litepal.exceptions.LitePalSupportException: Attempt to invoke virtual method 'java.lang.Class[] java.lang.reflect.Constructor.getParameterTypes()' on a null object reference at org.litepal.crud.DataHandler.createInstanceFromClass(DataHandler.java:636) at org.litepal.crud.DataHandler.getInitParamValue(DataHandler.java:953) at org.litepal.crud.DataHandler.getConstructorParams(DataHandler.java:692) at org.litepal.crud.DataHandler.createInstanceFromClass(DataHandler.java:634) at org.litepal.crud.DataHandler.query(DataHandler.java:139) at org.litepal.crud.QueryHandler.onFind(QueryHandler.java:159) at org.litepal.FluentQuery.find(FluentQuery.java:234) at org.litepal.FluentQuery$1.run(FluentQuery.java:253) at java.lang.Thread.run(Thread.java:764) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class[] java.lang.reflect.Constructor.getParameterTypes()' on a null object reference at org.litepal.crud.DataHandler.getConstructorParams(DataHandler.java:689) at org.litepal.crud.DataHandler.createInstanceFromClass(DataHandler.java:634) at org.litepal.crud.DataHandler.getInitParamValue(DataHandler.java:953) at org.litepal.crud.DataHandler.getConstructorParams(DataHandler.java:692) at org.litepal.crud.DataHandler.createInstanceFromClass(DataHandler.java:634) at org.litepal.crud.DataHandler.query(DataHandler.java:139) at org.litepal.crud.QueryHandler.onFind(QueryHandler.java:159) at org.litepal.FluentQuery.find(FluentQuery.java:234) at org.litepal.FluentQuery$1.run(FluentQuery.java:253) at java.lang.Thread.run(Thread.java:764)