[英]Content provider in Android by Kotlin
大家!
我在Android中为练习Kotlin创建了一个侧面应用程序。 我创建了这样的提供者:
class TestProvider : ContentProvider() {
companion object {
val sUriMatcher = UriMatcher(UriMatcher.NO_MATCH)
val MATCH_WITH_TEST = 0
init {
sUriMatcher.addURI("$APPLICATION_ID.provider", TestEntity.TABLE_NAME, MATCH_WITH_TEST)
}
}
var mDatabaseHelper: LocalSQLiteHelper? = null
override fun onCreate(): Boolean {
mDatabaseHelper = LocalSQLiteHelper(context)
return true
}
override fun insert(uri: Uri?, values: ContentValues?): Uri? {
if (mDatabaseHelper != null && !mDatabaseHelper?.writableDatabase?.isReadOnly) {
}
return uri
}
}
你看! 内容提供者必须包含数据库助手。 此数据库帮助程序仅在父类的onCreate()
方法中创建。
所以现在我想检查writableDatabase
是否为只读数据库。 因为mDatabaseHelper
是LocalSQLiteHelper?
所以!mDatabaseHelper?.writableDatabase?.isReadOnly
代码返回Boolean?
if
控制声明,Kotlin不接受。
有没有人和我有同样的问题?
更新:
我找到了一个解决方案:
val database: SQLiteDatabase = mDatabaseHelper?.writableDatabase as SQLiteDatabase
它工作,但我不知道为什么?
只需使用let
:
override fun insert(uri: Uri?, values: ContentValues?): Uri? {
mDatabaseHelper?.let {
if (it.writableDatabase.isReadOnly) {
}
}
return uri
}
?.let { it -> ... }
在闭包内给出数据库助手对象,如果它不为null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.