我更新了android studio和境界,并花了很多时间来处理错误以使其正常运行。在更新所有内容之前,以下代码可以正常工作。
现在它说从未使用过属性uid
,并且在尝试运行该程序时出现错误。当我运行该应用时,该应用崩溃了,错误是:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void io.realm.ProxyState.setConstructionFinished()' on a null object reference
at io.realm.com_myApp_SettingsRealmProxy.<init>(com_myApp_SettingsRealmProxy.java:82)
at io.realm.DefaultRealmModuleMediator.newInstance(DefaultRealmModuleMediator.java:69)
at io.realm.Realm.createObjectInternal(Realm.java:1001)
at io.realm.Realm.createObject(Realm.java:977)
import io.realm.RealmObject
open class Settings() : RealmObject() {
var name: String = ""
var uid: Int = 0
var settings = ""
}
我正在如下使用它。
val statsRealm = realm.createObject(Settings::class.java)
statsRealm.name = "MathTrainerStats"
statsRealm.settings = generateJSONString()
realm.commitTransaction()
这将导致上述错误。但是,如果我添加uid
,该错误就会消失。
val statsRealm = realm.createObject(Settings::class.java)
statsRealm.uid = 22
statsRealm.name = "MathTrainerStats"
statsRealm.settings = generateJSONString()
realm.commitTransaction()
由于代码在更新android studio gradle,kotlin等之前有效,因此我不理解错误的含义。
这是“应用插件”部分
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
android {
compileSdkVersion 26
defaultConfig {
.....