arrayListOf 显示 Int 而不是 String - Kotlin

arrayListOf showing Int rather than String - Kotlin

我正在尝试从字符串文件中获取字符串值,如下所示:

var language = arrayListOf<String>(
    R.string.All_Categories.toString(),
    
)

但它显示的是 Int 而不是像这样的字符串:

我做错了什么?

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)