Конкатенация в setText() - Anroid Studio не нравится

189
01 марта 2018, 12:56

В качестве упражнения делаю простое приложение по заказу пиццы - выбор размера (влияет на цену) плюс дополнительный топпинг (тоже влияет на цену).

В итоге подбивается сумма заказа:

total.setText(getString(R.string.total_price_output) + String.format("%.02f", calculateTotal()));

Здесь total_price_output - это фраза "Total Price: $" в strings.xml, a метод calculateTotal() как раз и вычисляет общую стоимость заказа с учетом размеров и топпингов.

Все работает, но Андроид Студио выделяет эту строчку желтой черточкой, т.е. код не соответствует правилам хорошего тона и дает мне такую рекомендацию:

Do not concatenate text displayed with setText. Use resource string with placeholders.

Как поступить? Добавить переменную, присвоить ей все, что сейчас идет в setText() и затем вызвать setText() с этой переменной?

Answer 1

Студия говорит о том, что правильнее использовать плейсхолдеры в ресурсах.

Пример из официальной документации (заголовок Formating strings).

строка в файле ресурсов:

 <string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

вызов в коде:

String text = getString(R.string.welcome_messages, username, mailCount);

на место %1$s в строке ресурсов подставится значение username, на место %2$d - mailCount. при этом s в плейсхолдере значит строку, а d - число.

в результате получим строку вида:Hello, Petrov! You have 3 new messages

READ ALSO
Вставить картинки в проект javafx

Вставить картинки в проект javafx

В своем приложении javafx, который я создаю в IDE IntelliJ IDEA, мне нужно добавить картинкиДля заливки фигуры, фон и т

422
Смена кодировки в Веб сервере

Смена кодировки в Веб сервере

Имеется проблема с кодировкой при разработке веб приложенияЯ использую веб приложение WildFly 11

292
Java 9 Dependency [требует правки]

Java 9 Dependency [требует правки]

Проект работал на JDK 18

200