Android и Kotlin varargs: отформатированные строки возвращают мусор - PullRequest
0 голосов
/ 15 января 2019

Я сталкиваюсь со странной проблемой: у меня есть общая функция, которая используется для извлечения строк ресурсов (это просто во избежание записи context.resources.getString () каждый раз):

protected fun string(@StringRes stringRes: Int, vararg args: String): String = app.getString(stringRes, args) 

работал до сих пор, пока я не добавил varargs для получения отформатированных строк. Простые строки по-прежнему работают нормально, но когда я попытался получить отформатированную строку:

string(R.string.formatted_string, myId)

мой строковый ресурс:

<string name="formatted_string">#%s</string>

Я получил немного мусора:

#[Ljava.lang.String;@3a59711

Ожидаемый результат:

#4848684

изменение мусора с ресурсом, который я запрашиваю

Это выглядит как идентификатор объекта.

Если я не использую метод, он отлично работает

Что здесь происходит?

1 Ответ

0 голосов
/ 15 января 2019

Решение для вас - использовать оператор спреда *:

fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)

Переменное количество аргументов (Varargs)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...