糖ORM无法保存在Kotlin

时间:2018-03-05 15:30:59

标签: android kotlin sugarorm

我有一个扩展SugarRecord的课程,这里是:

class Advertiser : SugarRecord<Advertiser> {
    var number: String? = null
    var name: String? = null

    constructor() {}

    constructor(number: String, name: String) {
        this.number = number
        this.name = name
    }
}

我在清单中有糖元数据:

    <meta-data android:name="DATABASE" android:value="sugar_example.db" />
    <meta-data android:name="VERSION" android:value="2" />
    <meta-data android:name="QUERY_LOG" android:value="true" />
    <meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" />

我尝试创建Advertiser的新实例并将其保存在MainActivity.kt中:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val advertiser = Advertiser("123123", "test advertiser")
        advertiser.save()





    }
}

但是我得到了异常,这里是堆栈跟踪:

  

致命的例外:主要                                                                            处理:ge.ketili.team.blocksms,PID:22305                                                                            java.lang.RuntimeException:无法启动活动   ComponentInfo {ge.ketili.team.blocksms / ge.ketili.team.blocksms.MainActivity}:   java.lang.NullPointerException:尝试调用虚方法   &#39; com.orm.Database com.orm.SugarApp.getDatabase()&#39;在null对象上   参考                                                                                在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2706)                                                                                在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)                                                                                在android.app.ActivityThread.-wrap12(ActivityThread.java)                                                                                在   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1514)                                                                                在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                在android.os.Looper.loop(Looper.java:163)                                                                                在android.app.ActivityThread.main(ActivityThread.java:6205)                                                                                at java.lang.reflect.Method.invoke(Native Method)                                                                                在   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:904)                                                                                在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)                                                                             引起:java.lang.NullPointerException:尝试调用虚拟   方法&#39; com.orm.Database com.orm.SugarApp.getDatabase()&#39;在null   对象参考                                                                                在com.orm.SugarRecord.save(SugarRecord.java:45)                                                                                在ge.ketili.team.blocksms.MainActivity.onCreate(MainActivity.kt:15)                                                                                在android.app.Activity.performCreate(Activity.java:6864)                                                                                在   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)                                                                                在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659)

1 个答案:

答案 0 :(得分:1)

您的申请应为SugarApp中的AndroidManifest.xml

<application android:name="com.orm.SugarApp"
...
</application>