我想创建一个单例来访问某些函数,但是当我导入它时,它找不到要导入的类:
单例课程:
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")
有什么想法吗? 预先感谢。
答案 0 :(得分:3)
这在Kotlin中不是这样。在您的代码中,getInstance()
是一个常规方法,需要您的DBHandler
类的实例。因此该方法不是静态的,无法像您尝试的那样被调用。
object
是Kotlin中处理单例的默认方式。但是,如果您需要更强大的功能并需要一个实例,请查看以下内容:Singleton class in Kotlin
基本上,您从companion object
返回该类的实例。
顺便说一句,为什么您的DBHandler
扩展了AppCompatActivity
?