如何在没有初始化的情况下在Kotlin中声明一个val,可以从课堂上的任何乐趣中获得?

Edu*_*ona 2 android kotlin

我正在Kotlin中创建一个内容提供程序,它使用数据库存储数据并使用加载器查询它们,问题是,我需要从任何函数都可以访问我的DBHelper变量:onCreate,query,update等... java这很容易但是在Kotlin中,IDE告诉我必须初始化val,我尝试使用init块,但android studio说DBHelper必须在onCreate()中初始化

那么,如何在Kotlin中创建一个可以为类中的任何函数启用的val,并且可以在像Java这样的onCreate函数中初始化?

这是我的代码:

public class ProviderMMR : ContentProvider() {
var dbHelper


companion object Matcher{
    var uriMatcher = UriMatcher(UriMatcher.NO_MATCH)

    init{
        uriMatcher.addURI(MMDContract.columnas.AUTHORITY,MMDContract.columnas.TABLA_FARMACIA,1)
    }

}

override fun onCreate(): Boolean {
    dbHelper  =  mmrbd(context)

    return true
}

override fun insert(uri: Uri?, values: ContentValues?): Uri {
    val db = dbHelper.writableDatabase

    val rowID = db.insert(MMDContract.columnas.TABLA_FARMACIA, null, values)


    val uri_actividad = ContentUris.withAppendedId(MMDContract.columnas.CONTENT_BASE_URI, rowID)

    return uri_actividad



}

override fun query(uri: Uri?, projection: Array<out String>?, selection: String?, selectionArgs: Array<out String>?, sortOrder: String?): Cursor {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


override fun update(uri: Uri?, values: ContentValues?, selection: String?, selectionArgs: Array<out String>?): Int {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun delete(uri: Uri?, selection: String?, selectionArgs: Array<out String>?): Int {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}

override fun getType(uri: Uri?): String {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
Run Code Online (Sandbox Code Playgroud)

}

Paw*_*wel 7

您还可以使用lazy delegate,它将在首次访问时创建您的dbHelper对象

val dbHelper by lazy { mmrbd(context) }
Run Code Online (Sandbox Code Playgroud)


tom*_*pee 5

您可以lateinit var在onCreate中使用和初始化它。在此处检查后期初始化的属性和变量以供参考。 https://kotlinlang.org/docs/reference/properties.html