Kotlin Pass对象类作为参数初始化

时间:2018-03-29 19:52:20

标签: java android android-studio object kotlin

我需要传递参数 SQLiteDatabase 类/对象让execSQL行为。在 SQL_User 中,包含在扩展的SQLiteOpenHelper中....但是我如何在 DatabaseActivity上初始化

我想我根本不明白这是怎么回事......

class DatabaseActivity : Activity {
   override fun onCreate(savedInstanceState: Bundle?) {
      super.onCreate(savedInstanceState)
      setContentView(R.layout.activity_main)

      val db = Sql_User(this, "Users", null, 1)

      // Here I get an error on ??, anything I think could works doesn'ts
      if (db != null) { Sql_User.insert( «??» , "1", "DefaultUser") }

   }
}


class Sql_User : SQLiteOpenHelper {
    companion object {
        fun insert(p0: SQLiteDatabase?, p1: String, p2: String){ p0!!.execSQL("INSERT INTO Users ( id_user, username ) VALUES ('${p1}, '${p2}')") 
    }

    ...
}

我在该行上出现的错误,我传递的任何参数都是...... 分类器SQLiteDatabase没有伴随对象,因此必须在此初始化

1 个答案:

答案 0 :(得分:1)

您的db变量的类型为SQLOpenHelper,而非SQLiteDatabase。要从帮助程序获取数据库,您需要调用getWritableDatabase方法(或kotlin中的writeableDatabase属性)来获取数据库。

所以对你来说,像 -

 Sql_User.insert(db.writeableDatabase , "1", "DefaultUser")