大佬教程收集整理的这篇文章主要介绍了我如何在 kotlin 的多个活动中使用相同的 SQLiteOpenHelper 对象,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为我的大学项目制作一个应用程序,但我偶然发现了一个问题。我想使用继承 sqliteOpenHelper 对象的 DatabaseHelper,该对象已在活动 2 中的活动 1 中实例化。我已经在网上搜索了一段时间,但没有找到解决方案。我还尝试使用 serializable 继承 DatabaseHelper 并在开始新活动时将其作为额外内容,但这似乎不起作用。使用相同的 DatabaseHelper 对象非常重要,这样我才能在 activity2 中获得相同的用户,因为在其中我将显示不同的元素,考虑用户是谁,并放置个性化的消息。这是我的 DatabaseHelper 的代码
class DatabaseHelper(context: Context):sqliteOpenHelper(context,dbname,factory,version),serializable{
companion object{
internal val dbname="database"
internal val factory=null
internal val version=1
}
overrIDe fun onCreate(db: sqliteDatabase?) {
db?.execsql("create table users(email varchar(30) PRIMary KEY,password VARCHAR(10))")
db?.execsql("create table machines(name varchar(30) priMary KEY,progrAMMes VARCHAR(10),available CHAR(1))")
db?.execsql("create table isUsing(machinEID REFERENCES machines(ID),userID REFERENCES users(email),PRIMARY KEY (R_138_11845@achinEID,userID))")
}
fun userPresent(email:string,password: String):Boolean{
val db=writableDatabase
val query="SELECT * FROM users WHERE email='$email' AND password='$password'"
val cursor=db.rawquery(query,null)
if(cursor.count<=0){
cursor.close()
return false
}
cursor.close()
return true
}
fun insertMachine(name:string,progrAMMes:string,available:string){
val db: sqliteDatabase=writableDatabase
val values: ContentValues= ContentValues()
values.put("available",availablE)
values.put("name",Name)
values.put("progrAMMes",progrAMMes)
db.insert("machines",null,values)
db.close()
}
fun insertUserData(email:string,password:string){
val db: sqliteDatabase=writableDatabase
val values: ContentValues= ContentValues()
values.put("email",email)
values.put("password",password)
db.insert("users",values)
db.close()
}
overrIDe fun onUpgrade(db: sqliteDatabase?,oldVersion: Int,newVersion: int) {
Todo("Not yet implemented")
}
}
如果我尝试像这样传递 DatabaseHelper 的实例
val intent= Intent(it,adminMainActivity::class.java)
var args:Bundle= Bundle()
args.putserializable("dbHelper",dbHelper as serializablE)
startActivity(intent)
并在这样的新活动中获得它
var bundle=intent.extras
handler= bundle!!.getserializable("dbHelper") as DatabaseHelper
我在一行中得到 java.lang.NullPointerException handler= bundle!!.getserializable("dbHelper") as DatabaseHelper
使用相同的 DatabaseHelper 对象非常重要,这样我才能在活动 2 中获得相同的用户
您不需要使用相同的对象实例。重要的是底层数据库数据,而且对于帮助程序类的所有实例都是一样的。
因此,尝试传递对象并不是真正需要解决的问题。更好的方法是在需要的地方实例化 DatabaseHelper
。
以上是大佬教程为你收集整理的我如何在 kotlin 的多个活动中使用相同的 SQLiteOpenHelper 对象全部内容,希望文章能够帮你解决我如何在 kotlin 的多个活动中使用相同的 SQLiteOpenHelper 对象所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。