程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我如何在 kotlin 的多个活动中使用相同的 SQLiteOpenHelper 对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决我如何在 kotlin 的多个活动中使用相同的 sqliteOpenHelper 对象?

开发过程中遇到我如何在 kotlin 的多个活动中使用相同的 sqliteOpenHelper 对象的问题如何解决?下面主要结合日常开发的经验,给出你关于我如何在 kotlin 的多个活动中使用相同的 sqliteOpenHelper 对象的解决方法建议,希望对你解决我如何在 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,请注明来意。