gpt4 book ai didi

android - Kotlin Android 中的内容提供程序

转载 作者:行者123 更新时间:2023-11-29 16:55:27 24 4
gpt4 key购买 nike

大家好!

我创建了一个用于在 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 是否是只读数据库。因为 mDatabaseHelperLocalSQLiteHelper? 所以 !mDatabaseHelper?.writableDatabase?.isReadOnly 代码返回 Boolean? 不被接受在 Kotlin if 控制语句中。

有没有人和我有同样的问题?

更新:

我找到了一个解决方案:

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 -> ... } 如果它不为空,则在闭包内为您提供数据库助手对象。

关于android - Kotlin Android 中的内容提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45203770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com