我是Kotlin的新手。 而且我需要Java和Kotlin无法理解的帮助。
对于Java我做到了。但是对于科特林,我不能 事情是, 我创建一个Global Kotlin类 公共类Global:Application()
在MainFest中,我宣布 android:name =“。Global”
在全局类中,我声明了一个变量:
public class Global : Application() {
open var homeAPIResponse: String = "defaultValue"
}
当我将此全局变量设置为任何值时,将不会保存该值,而当我始终获取该值时,它将显示默认值。我无法理解kotlin中的Java类型getter和setter方法。请帮助我。
我尝试过:
global = Global()
global.homeAPIResponse = "2nd Text"
Log.d("testingTag", "Testing modified response >>>> " + global.homeAPIResponse)
在日志中,它始终显示默认值。
================================================ ========================= 伙计们,我的目的是全局保存一些价值,将一项活动转移到另一项活动之后,该价值不会消失。
请帮助我提供正确描述的示例,因为我在堆栈溢出中进行了大量搜索。而无法得到它。
预先感谢
答案 0 :(得分:1)
您知道您可以像这样在一个简单的kt文件中创建全局变量吗?
var homeAPIResponse = "defaultValue"
这样,您可以像这样在任何地方更新它:
homeAPIResponse = "2nd Text"
希望它对您有帮助
答案 1 :(得分:1)
也许可以这样尝试:
public class Global : Application() {
companion object {
@JvmField
var homeAPIResponse: String = "defaultValue"
}
}
在其他活动中:
Global.homeAPIResponse = "new value"
答案 2 :(得分:1)
似乎您正在手动创建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
,仅靠它自己输入),它将导入。
修改
如果您的目的是使全局变量在活动之间持久存在,那么实际上不建议使用类(甚至是应用程序类)进行操作。
您是否考虑过SharedPreferences
?
获取
PreferenceManager.getDefaultSharedPreferences(context).getString("key to access with", "default value")
并与
一起存储PreferenceManager.getDefaultSharedPreferences(context).edit().putString("key to access with", "your new value").apply()
答案 3 :(得分:0)
您也可以这样做。
const val homeAPIResponse: String = "defaultValue"
当您要使用它时,只需在任何地方键入homeAPIResponse
const是编译时间常数。这意味着它们的值必须在编译时分配,这与vals不同,val可以在运行时完成。
这意味着,永远不能将const分配给函数或任何类构造函数,而只能分配给String或基元。