【发布时间】:2021-10-12 19:53:55
【问题描述】:
我正在尝试从这样的字符串文件中获取字符串值:
var language = arrayListOf<String>(
R.string.All_Categories.toString(),
)
但它显示的是 Int 而不是这样的字符串:
我做错了什么?
【问题讨论】:
标签: android string kotlin arraylist
我正在尝试从这样的字符串文件中获取字符串值:
var language = arrayListOf<String>(
R.string.All_Categories.toString(),
)
但它显示的是 Int 而不是这样的字符串:
我做错了什么?
【问题讨论】:
标签: android string kotlin arraylist
R.string.All_Categories 是 id,而不是字符串本身
获取你需要使用的字符串
var value = getString(R.string.All_Categories)
【讨论】:
问题是您正在对生成的参考执行toString。如果这是您引用的数组的名称,您应该使用 R.array.All_Categories。例如,资源文件中有以下内容。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="my_books">
<item>Scala Cookbook</item>
<item>Play Framework Recipes</item>
<item>How I Sold My Business: A Personal Diary</item>
<item>A Survival Guide for New Consultants</item>
</string-array>
</resources>
这就是您希望在代码中阅读它的方式。
Resources res = getResources();
String[] myBooks = res.getStringArray(R.array.my_books);
片段中的 Kotlin 代码示例:
val res: Resources = resources
val myBooks: Array<String> = res.getStringArray(R.array.my_books)
您可以在Array<String> 上使用.toList() 将其转换为您所期望的arrayListOf<String> 之类的集合对象。
【讨论】:
解决方案:
首先,在 OnCreate 中必须定义字符串:
val Profile_Settings = resources.getString(R.string.ProfileSettings)
其次,将值添加到数组中:
var language2 = arrayListOf<String>(
Profile_Settings,
)
【讨论】:
这很简单,您只需使用getString(your_string_id) 就可以了!
看起来像这样:
val data = getString(R.string.all_categories)
【讨论】: