【问题标题】:How to add strings values to arrayListOf in Kotlin?如何在 Kotlin 中将字符串值添加到 arrayListOf?
【发布时间】:2021-10-11 10:00:12
【问题描述】:

我正在使用两个不同的字符串文件在 Kotlin 中翻译一个应用程序,但在 arrayListOf 中有这样的字符串:

var language = arrayListOf<String>(
    "Profile Settings",
    "About Us",
    "Rate Us",
    "Language",
    "Push Notification",
    "Terms of Service",
    "Privacy Policy",
    "Help (FAQ)",
    "Support"
)

我想更改它以响应所选语言 例如:

var language = arrayListOf<String>(
    "@strings/Profile Settings",
    
)

是否可以从arrayListOf 中做到这一点?还是有其他方法?

【问题讨论】:

    标签: java android string kotlin arraylist


    【解决方案1】:

    你可以像这样重写数组列表:

    var language = arrayListOf<String>(
       getString(R.string.profile_settings),
       .... 
    )
    

    【讨论】:

      【解决方案2】:

      @string 是字符串资源的 XML 语法。要访问 Kotlin 中的字符串资源,您使用 R.string. R 值是 Ints,因此您需要将它们转换为字符串,您可以使用 map 来完成,以避免必须为每个元素重复代码。

      val language: List<String> = listOf(
          R.string.profileSettings,
          //...
      ).map { requireContext().getString(it) }
      

      如果您在属性而不是函数中执行此操作,则需要将整个声明包装在 by lazy 中,因为在附加 Fragment 之前上下文不可用。

      在Activity中,可以省略requireContext().,因为Activity本身就是自己的Context,所以可以简写为.map(::getString)

      【讨论】:

      • 在尝试您的解决方案后,我不断收到此错误“意外标记(使用 ';' 分隔同一行上的表达式)”
      • 您一定有语法问题。也许你使用了错误的括号。
      猜你喜欢
      • 2018-08-02
      • 2019-08-26
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多