【发布时间】:2022-01-23 15:02:52
【问题描述】:
我在几个地方需要相同的常量:
- 在Android
strings.xmlXML 资源文件中 - 在 Kotlin 源代码中作为静态字符串(无需访问上下文)
我该怎么办?
我可以看到 3 种可能性,可能与否,但我不知道如何实现它们:
a) 将strings.xml中的常量定义为资源,并在源代码中导入。
XML:好的
<string name="my_constant">My.value</string>
问题:我不能在我的代码中将它定义为静态/常量,因为我需要一个上下文来获取它的值,例如。与context.getString(R.string.my_constant)。除非有其他方法可以这样做,但我还没有找到。
科特林:?
companion object {
const val MY_CONSTANT = ??.getString(R.string.my_constant)
}
b) 在 Kotlin 源代码中定义常量,并将其值导入 XML 资源文件中。
科特林:好的
companion object {
const val MY_CONSTANT = "My.value"
}
问题:我还没有找到导入strings.xml 中的值的方法。
XML:?
<string name="my_constant" value="???"/>
c) 在build.gradle 中定义常量,在XML 和Kotlin 源代码中导入值。
问题:我只是不知道该怎么做,我尝试过BuildConfig,但无法在源代码中获取值。
gradle: ?
buildTypes {
all {
// does not seem correct:
buildConfigField 'String', 'MY_CONSTANT', '"My.value"'
}
release {
// ... other settings
}
}
XML: ? 科特林:?
companion object {
const val MY_CONSTANT = BuildConfig.MY_CONSTANT // does not work
}
【问题讨论】: