【问题标题】:如何在 XML 资源文件和源代码中将常量作为静态值共享
【发布时间】:2022-01-23 15:02:52
【问题描述】:

我在几个地方需要相同的常量:

  • 在Android strings.xml XML 资源文件中
  • 在 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
    }

【问题讨论】:

    标签: android kotlin gradle


    【解决方案1】:

    我通常这样定义我的 API 常量

    在 gradle.properties 中定义常量

    API_KEY=""
    

    然后在你的 build.gradle(Module) 中

    defaultConfig {
    
    buildConfigField("String", "API_KEY", API_KEY)
    
    }
    

    现在你应该可以从任何地方调用常量了

    BuildConfig.API_KEY
    

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      相关资源
      最近更新 更多