Я пытаюсь получить строковое значение из строкового файла следующим образом:
var language = arrayListOf<String>(
R.string.All_Categories.toString(),
)
но он показывает Int, а не такую строку:
Что я делаю не так?
РЕШЕНИЕ:
во-первых, в 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)
Проблема в том, что вы делаете 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>
.