Получение отформатированной строки возвращает странный результат

#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. Неправильный ключ — это опечатка, извините. Я вызываю правильный. Проблема не в этом