Я устанавливаю текст с помощью setText () следующим образом.
prodNameView.setText("" + name);
prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));
В этом первом простое использование, а во втором - установка текста с форматированием текста.
Android Studio настолько интересна, что я использовал меню Analyze -> Code Cleanup
и получил предложение в двух строках, например.
Не объединяйте текст, отображаемый с помощью setText. Используйте строку ресурса с заполнителями. меньше ... (Ctrl + F1)
При вызове TextView # setText:
- Никогда не вызывайте Number # toString () для форматирования чисел; он не будет правильно обрабатывать разделители дробей и цифры, зависящие от языка. Вместо этого рассмотрите возможность использования формата String # с соответствующими спецификациями формата (% d или% f).
- Не передавайте строковый литерал (например, «Hello») для отображения текста. Жестко закодированный текст нельзя правильно перевести на другие языки. Вместо этого рассмотрите возможность использования строк ресурсов Android.
- Не создавайте сообщения, объединяя фрагменты текста. Такие сообщения нельзя правильно перевести.
Что я могу для этого сделать? Кто-нибудь может помочь объяснить, что это за штука и что мне делать?
NPE
если name
будетNULL
name
нет NULL
перед использованием setText()
функции.
<string name="string_product_rate_with_ruppe_sign">Something %1$d</string>
А в своем java-коде вы делаете что-то вроде этого: prodOriginalPriceView.setText(getString(R.string.string_product_rate_with_ruppe_sign), price);
(вы можете выполнить форматирование в XML-файле: [ developer.android.com/guide/topics/resources/…
String
вsetText()
. Пример:setText(name)
вместоsetText("" + name)
. Потому что, если вы объедините текст, он не будет переведен, как если бы вы использовали жестко закодированный текст в качестве уведомления о сообщении,