kotlin установить значение глобальной переменной - PullRequest
0 голосов
/ 17 октября 2018

Мы пытаемся установить значение глобальной переменной, объявленной в коде ниже

class MyApplication: Application() {
var globalVar = 2

}

Теперь у нас есть основное действие, в котором есть текст редактирования с именем etPerson, мы хотели бы ввести значение в etPerson и установить введенное значение равным globalVarПочему, потому что мы хотим вызвать функцию базы данных в другом действииВот код, который делает вызов в БД

    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 в Основном действииИдея может быть реализована с использованием намерений «положить» и «получить», но это не является нашей целью

Наш вопрос заключается в том, как установить для globalVar значение, введенное в тексте редактирования?

1 Ответ

0 голосов
/ 17 октября 2018

Когда ваше приложение запускает один и только один объект класса 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, чтобы получить или установить его значение.Или вы можете импортировать переменную globalVar в любой класс, например:

import yourpackagename.MyApplication.Companion.globalVar

и ссылаться на него просто globalVarВам также нужно объявить MyApplication в манифесте:

  <application
        android:name=".MyApplication"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...