Kotlin «Не объединять отображаемый текст с setText. Используйте строку ресурса с заполнителями «.

#android #string #kotlin

#Android #строка #kotlin

Вопрос:

Я хочу установить тексты: станция 1, станция 2, станция 3…

Если у меня есть подобный код (фрейм типа ScrollView), я получаю предупреждение: «Не объединять отображаемый текст с setText. Используйте строку ресурса с заполнителями».

 for(i in 1..10){
    frame.stationTextView.text = "Station $i"
}
  

Однако, если я это сделаю, я не получу предупреждение.

 for(i in 1..10){
    val str = "Station $i"
    frame.stationTextView.text = str
}
  

Второй пример кажется мне избыточным, но предупреждение исчезло. Какой из них правильный, вероятно, ни тот, ни другой. Я не уверен, как использовать строку ресурса с изменяющимся индексом.

Комментарии:

1. Второй способ по-прежнему «неправильный». Линтер просто недостаточно сложен, чтобы перехватить его и предупредить вас об этом. Это говорит вам не отображать жестко закодированный текст вместо использования надлежащих строковых ресурсов.

Ответ №1:

Создайте строковый ресурс, подобный следующему

  <string name="station_counter_text">Station %1$d</string>
  

Затем из Activity / Fragment используйте следующее

 for(i in 1..10)
 frame.stationTextView.text = getString(R.string. station_counter_text,i)