Android / Kotlin:我尝试创建一个简单的Singleton,但是当我想使用它时,它不会导入我想要使用的类中的类

问题描述 投票:0回答:1

我想创建一个单例来访问某些函数,但是当我导入它时,它找不到要导入的类: enter image description here

单身类: DBHandler.kt

    package com.xxxxx.GMP_app_android.DBManagement

    import android.database.sqlite.SQLiteDatabase
    import android.database.sqlite.SQLiteOpenHelper
    import android.content.Context
    import android.content.ContentValues
    import android.content.ContentResolver
    import com.NewTelApps.GMP_app_android.DBLocal
    import com.NewTelApps.GMP_app_android.DBServer
    import android.support.v7.app.AppCompatActivity
    import android.os.Bundle
    import android.view.View

    class DBHandler : AppCompatActivity() {
        var sharedManager: DBHandler? = null

        fun createInstance(): DBHandler {
            if (sharedManager == null) {
                sharedManager = DBHandler()
            }
            return sharedManager!!
        }

        fun getInstance(): DBHandler? {
            if (sharedManager == null) createInstance()
            return sharedManager
        }


        fun methodToSelectData(strQuery: String, dataBase: String)/*, completion: @escaping (_ result:*/
        {
    /*        val dbLocal = DBLocal(this, null, null, 1)
            dbLocal.methodToSelectData(strQuery)*/
        }

        fun methodToInsertUpdateDeleteData(strQuery: String)/*, completion: @escaping (_ result: Bool) -> Void)*/
        {

        }
    }

在另一个类中使用:无法访问getInstance()

DBHandler.getInstance().methodToSelectData("SELECT * FROM TABLE")

有任何想法吗?提前致谢。

android kotlin import singleton
1个回答
3
投票

这不是Kotlin的工作方式。在您的代码中,getInstance()是一个常规方法,需要您的DBHandler类的实例。所以这个方法不是静态的,不能像你想要的那样被调用。

object是在Kotlin做单身人士的默认方式。但是如果你想要更强大的东西并且需要一个实例,请看看:Singleton class in Kotlin

基本上你从companion object返回一个类的实例。

顺便说一句,为什么你的DBHandler延伸AppCompatActivity

© www.soinside.com 2019 - 2024. All rights reserved.