繁体   English   中英

Android中的内容提供商Kotlin

[英]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是否为只读数据库。 因为mDatabaseHelperLocalSQLiteHelper? 所以!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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM