У меня есть рабочая версия кода на Java, и мне бы хотелось переписать код на kotlin, но в конце у меня возникала проблема с методом query, он видимо ругается на неправильную реализацию, но я не знаю как это исправить. Смотрите изображение.
class LocalBDLessonsInternetKt(var mContext : Context) : SQLiteOpenHelper(mContext, DB_PATH, null, 2){ var myDataBase: SQLiteDatabase? = null companion object { @SuppressLint("StaticFieldLeak") var mContext : Context = LocalBDLessonsInternetKt.mContext var DB_PATH : String = "/data/data/$ {mContext.packageName}/databases/" } @Throws(IOException::class) fun createDataBase() { val dbExist = checkDataBase() if (dbExist) { } else { this.readableDatabase try { copyDataBase() } catch (e: IOException) { throw Error("Error copying database") } } } private fun checkDataBase(): Boolean { try { val myPath = DB_PATH + DB_NAME myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY) } catch (e: SQLiteException) { } if (myDataBase != null) { myDataBase!!.close() } return if (myDataBase != null) true else false } @Throws(IOException::class) private fun copyDataBase() { val myInput = mContext.getAssets().open(DB_NAME) val outFileName = DB_PATH + DB_NAME val myOutput = FileOutputStream(outFileName) val buffer = ByteArray(10) var length: Int = 0 while ({length = myInput!!.read(buffer); length} () != 0) { myOutput.write(buffer, 0, length) } myOutput.flush() myOutput.close() myInput.close() } @Throws(SQLException::class) fun openDataBase() { val myPath = DB_PATH + DB_NAME myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY) } @Synchronized override fun close() { if (myDataBase != null) myDataBase!!.close() super.close() } override fun onCreate(db: SQLiteDatabase?) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { if (newVersion > oldVersion) try { copyDataBase() } catch (e: IOException) { e.printStackTrace() } } fun setQuery(table: String, columns: Array<String>, selection: String, selectionArgs: Array<String>, groupBy: String, having: String, sortOrder: String): Cursor { return myDataBase.query(table = table, columns = columns, selection = selection, selectionArgs = selectionArgs, groupBy = groupBy, having = having, sortOrder = sortOrder) } }
Ошибка
Error:(111, 28) None of the following functions can be called with the arguments supplied: public open fun query(p0: Boolean, p1: String!, p2: Array<(out) String!>!, p3: String!, p4: Array<(out) String!>!, p5: String!, p6: String!, p7: String!, p8: String!): Cursor! defined in android.database.sqlite.SQLiteDatabase public open fun query(p0: Boolean, p1: String!, p2: Array<(out) String!>!, p3: String!, p4: Array<(out) String!>!, p5: String!, p6: String!, p7: String!, p8: String!, p9: CancellationSignal!): Cursor! defined in android.database.sqlite.SQLiteDatabase public open fun query(p0: String!, p1: Array<(out) String!>!, p2: String!, p3: Array<(out) String!>!, p4: String!, p5: String!, p6: String!): Cursor! defined in android.database.sqlite.SQLiteDatabase public open fun query(p0: String!, p1: Array<(out) String!>!, p2: String!, p3: Array<(out) String!>!, p4: String!, p5: String!, p6: String!, p7: String!): Cursor! defined in android.database.sqlite.SQLiteDatabase