#android #kotlin
#Android #kotlin
Вопрос:
У меня есть менеджер ресурсов со следующим методом
fun getString(@StringRes resId: Int, vararg params: Any): String {
return context.getString(resId, params)
}
Я называю это так
resourceManager.getString(R.string.number_reps, "20")
Вот строка:
<string name="number_reps">%1$s reps</string>
По какой-то причине, когда я вызываю этот метод, он возвращает эту действительно странную строку:
[Ljava.lang.Object;@5356cf reps
Кто-нибудь знает, почему это могло произойти
Обновить
У меня это сработало
String.format(resourceManager.getString(R.string.number_reps), "20")
Комментарии:
1. Вы передаете a
vararg
вgetString
, а не в первый элемент (он обрабатывается как массив внутри функции). Очевидно, что вvararg
реализации нет реализации toString, поэтому вы получаетеObject
реализацию. Ответы правильные о неправильном идентификаторе ресурса — но я подозреваю, что ваш пост неверен, иначе это была бы синтаксическая ошибка.2. Опубликуйте код, который вызывает и присваивает эту функцию.
Ответ №1:
попробуйте заменить
resourceManager.getString(R.string.number_repetitions, "20")
Автор:
resourceManager.getString(R.string.number_reps, "20")
Ответ №2:
Вы используете неправильный ключ при доступе к строке.
Используйте это resourceManager.getString(R.string.number_reps, "20")
Вы также можете использовать String.format
для достижения тех же результатов, что и ниже,
String.format(getString(R.string.number_reps), "20")
Комментарии:
1. Неправильный ключ — это опечатка, извините. Я вызываю правильный. Проблема не в этом