arrayListOf показывает Int, а не String - Kotlin

avatar
Enigma
9 августа 2021 в 03:55
100
4
0

Я пытаюсь получить строковое значение из строкового файла следующим образом:

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

но он показывает Int, а не такую ​​строку:

enter image description here

Что я делаю не так?

Источник

Ответы (4)

avatar
Enigma
11 августа 2021 в 06:05
0

РЕШЕНИЕ:

во-первых, в OnCreate необходимо определить строку:

val Profile_Settings = resources.getString(R.string.ProfileSettings)

во-вторых, добавьте значение в массив:

var language2 = arrayListOf<String>(
        Profile_Settings,
        
    )
avatar
Mohak Shah
13 августа 2021 в 11:36
0

это очень просто, вам просто нужно использовать getString(your_string_id) и все готово!

выглядит так:

val data = getString(R.string.all_categories) 
avatar
Mohit Ajwani
9 августа 2021 в 04:07
0

Проблема в том, что вы делаете 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)

Вы можете использовать .toList() в Array<String>, чтобы преобразовать его в объект коллекции, подобный ожидаемому вами arrayListOf<String>.

avatar
AmrDeveloper
9 августа 2021 в 04:04
3

R.string.All_Categories — это идентификатор, а не сама строка

Чтобы получить строку, вам нужно использовать

var value = getString(R.string.All_Categories)