代码之家  ›  专栏  ›  技术社区  ›  Vector

全局变量的kotlin集值

  •  1
  • Vector  · 技术社区  · 6 年前

    我们试图设置下面代码中声明的全局变量的值

     class MyApplication: Application() {
        var globalVar = 2
    }
    

    现在我们有一个主活动,它有一个名为etPerson的编辑文本,我们想在etPerson中输入一个值,并将输入的值设置为globalVar
    为什么是因为我们想在另一个活动中调用数据库函数
    下面是调用DB的代码

        var mApp = MyApplication()
        var intGlobalVar = mApp.globalVar
        println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@ globalINT = "+intGlobalVar)
        var ITEM = db.getItem(intGlobalVar)
        println("%%%%%%%%%%%%%%%%%% ITEM "+ITEM?.id+" name "+ITEM?.name)
    


        fun getItem(id: Int): Contact? {
        val db = this.writableDatabase
        val selectQuery = "SELECT  * FROM $TABLE_NAME WHERE $colId = ?"
        db.rawQuery(selectQuery, arrayOf(id.toString())).use {
            // .use requires API 16
            if (it.moveToFirst()) {
                val result = Contact(0)
                result.id = it.getInt(it.getColumnIndex(colId))
                result.name = it.getString(it.getColumnIndex(colName))
                return result
            }
        }
        return null
    }
    

    因此,问题是将var globalVar设置为在主活动的etPerson中输入的值
    这个概念可以通过使用put和get来实现,但这不是我们的目标

    我们的问题是如何将globalVar设置为编辑文本中输入的值?

    1 回复  |  直到 4 年前
        1
  •  21
  •   forpas    6 年前

    当您的应用程序启动时,只会创建MyApplication()类的一个对象,因此您不需要:

    var mApp = MyApplication()
    

    您可以访问 MyApplication() 以及应用程序中任何地方的所有成员。

    companion 中的对象 MyApplication() globalVar 内部声明:

    class MyApplication: Application() {    
        companion object {
            var globalVar = 2
        } 
    
        override fun onCreate() {
            super.onCreate()
            // initialization code here
        }
    }
    

    MainActivity MyApplication.Companion.globalVar 获取或设置其值。
    全球银行

    import yourpackagename.MyApplication.Companion.globalVar
    

    简单地说 全球银行

    MyApplication 在舱单中:

      <application
            android:name=".MyApplication"