Kotlin Установить глобальную переменную в глобальном классе - PullRequest
1 голос
/ 17 апреля 2020

Я новичок в Kotlin. И мне нужна помощь, которую я не могу понять java и kotlin.

Для Java Я сделал это. Но для kotlin я не могу Дело в том, что я создаю глобальный kotlin класс publi c class Global: Application ()

В MainFest я объявил, что android: name = ". Global "

и в Global Class я объявил переменную:

public class Global : Application() {
    open var homeAPIResponse: String = "defaultValue"
}

Когда я задаю для этой глобальной переменной любое значение, оно не сохраняется, а когда я получаю значение, оно всегда отображается значение по умолчанию. Я не могу понять методы получения и установки java в kotlin. Пожалуйста, помогите мне.

Я пытался это сделать:

global = Global()
global.homeAPIResponse  = "2nd Text"

Log.d("testingTag", "Testing modified response >>>> " + global.homeAPIResponse)

В журнале всегда отображается значение по умолчанию.

============= ================================================== ========== Ребята, моя цель - сохранить какое-то значение в глобальном масштабе, чтобы после перемещения одного действия в другое значение не стиралось.

Пожалуйста, помогите мне с правильно описанным примером, потому что я много искал по переполнению стека. и не могу его получить.

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 17 апреля 2020

Возможно попробуйте так:

public class Global : Application() {
    companion object {
        @JvmField
        var homeAPIResponse: String = "defaultValue"
    }
}

В другой деятельности:

Global.homeAPIResponse = "new value"
1 голос
/ 17 апреля 2020

Кажется, вы создаете приложение Global() вручную; вам не следует этого делать.

Один Application класс создается автоматически при запуске приложения.

Вы хотите это как глобальную переменную? Сделайте предложенный ответ следующим образом:

companion object {
    var globalVariable = "initial value"
}

Поместите это в класс Global(). Не создавайте новый экземпляр Global() вручную. Вместо этого в своей деятельности просто позвоните Global.globalVariable = "your new value"

Кроме того, вы можете сделать это, что kotlin называет «Переменной верхнего уровня». Объявите его выше объявления глобального класса следующим образом:

var yourGlobalVariable = "default text"

class Global : Application () {

 // etc.

Это может использоваться где угодно. Начните вводить его в своем приложении (без Global, только само по себе), и оно будет импортировано.

edit

Если ваша цель - иметь глобальный Переменная, которая сохраняется между действиями, делать это с помощью класса (даже класса приложения) действительно не рекомендуется.

Рассматривали ли вы SharedPreferences?

Получить с

PreferenceManager.getDefaultSharedPreferences(context).getString("key to access with", "default value")

И хранить с

PreferenceManager.getDefaultSharedPreferences(context).edit().putString("key to access with", "your new value").apply()
1 голос
/ 17 апреля 2020

Знаете ли вы, что вы можете просто создать свою глобальную переменную в простом файле kt, например:

var homeAPIResponse = "defaultValue"

С этим вы можете обновить его в любом месте, как вы хотите:

homeAPIResponse = "2nd Text"

Надеюсь, это поможет вам

0 голосов
/ 17 апреля 2020

вы также можете сделать это таким образом.

const val homeAPIResponse: String = "defaultValue"

, если вы хотите использовать его, просто введите homeAPIResponse в любом месте

константы - это константы времени компиляции. Это означает, что их значение должно быть присвоено во время компиляции, в отличие от vals, где это может быть сделано во время выполнения.

Это означает, что константы никогда не могут быть назначены функции или любому конструктору класса, но только Строка или примитив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...