저는 데이터를 저장하기 위해 DB를 사용하고 로더로 쿼리하는 Kotlin에서 콘텐츠 제공 업체를 만들고 있는데, 문제는 내 DBHelper 변수가 onCreate, 쿼리, 업데이트 등 모든 기능에서 도달 할 수 있어야한다는 것입니다. java 이것은 쉽지만 Kotlin에서는 IDE에서 val을 초기화해야한다고 알려주고 init 블록을 사용해 보았지만 android studio에서는 onCreate ()에서 DBHelper를 초기화해야한다고 말합니다.
그렇다면 클래스의 모든 함수에 도달 할 수 있고 Java와 같은 onCreate 함수에서 초기화 할 수있는 값을 Kotlin에서 어떻게 만들 수 있습니까?
이것은 내 코드입니다.
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.
}
}
첫 번째 액세스에서 dbHelper 개체를 만드는 지연 대리자를 사용할 수도 있습니다.
val dbHelper by lazy { mmrbd(context) }
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다