Tôi đang thiết lập văn bản bằng cách sử dụng setText () theo cách sau.
prodNameView.setText("" + name);
prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));
Trong đó Đầu tiên là sử dụng đơn giản và Thứ hai là thiết lập văn bản với định dạng văn bản.
Android Studio rất thú vị, tôi đã sử dụng Menu Analyze -> Code Cleanup
và tôi có gợi ý về hai dòng trên.
Không nối văn bản được hiển thị với setText. Sử dụng chuỗi tài nguyên với trình giữ chỗ. ít hơn ... (Ctrl + F1)
Khi gọi TextView # setText:
- Không bao giờ gọi Số # toString () để định dạng số; nó sẽ không xử lý các dấu tách phân số và các chữ số cụ thể của miền địa phương. Thay vào đó, hãy xem xét sử dụng định dạng Chuỗi # với thông số định dạng phù hợp (% d hoặc% f).
- Không vượt qua một chuỗi ký tự (ví dụ "Xin chào") để hiển thị văn bản. Văn bản mã hóa cứng không thể được dịch sang các ngôn ngữ khác. Thay vào đó hãy xem xét sử dụng chuỗi tài nguyên Android.
- Không xây dựng thư bằng cách ghép các đoạn văn bản. Những tin nhắn như vậy không thể được dịch đúng.
Tôi có thể làm gì cho việc này? Bất cứ ai cũng có thể giúp giải thích điều đó là gì và tôi nên làm gì?
NPE
nếu name
làNULL
name
không phải là NULL
trước khi sử dụng setText()
chức năng.
<string name="string_product_rate_with_ruppe_sign">Something %1$d</string>
Và trong mã java của bạn, bạn làm một cái gì đó như thế này: prodOriginalPriceView.setText(getString(R.string.string_product_rate_with_ruppe_sign), price);
(bạn có thể thực hiện định dạng trong tệp xml: [ developer.android.com/guide/topics/resource/,
String
thànhsetText()
. Vd:setText(name)
thay chosetText("" + name)
. Bởi vì nếu bạn ghép văn bản, nó sẽ không được dịch giống như bạn sử dụng văn bản Hardcoding như thông báo thông báo