Tôi đang đặt văn bản bằng cách sử dụng setText() bằng cách sau.Android TextView: "Không ghép nối văn bản được hiển thị với setText"
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 một là sử dụng đơn giản và Second ai thiết lập văn bản với văn bản định dạng.
Android Studio thật thú vị, tôi đã sử dụng Menu Analyze -> Code Cleanup
và tôi đã nhận được đề xuất về hai dòng như trên.
Đừng nối văn bản hiển thị với setText. Sử dụng chuỗi tài nguyên với trình giữ chỗ. ít ... (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ể theo ngôn ngữ cụ thể. Hãy xem xét sử dụng định dạng Chuỗi # với thông số kỹ thuật định dạng thích hợp (% d hoặc% f) thay thế.
- Không được chuyển một chuỗi chữ (ví dụ: "Hello") để hiển thị văn bản. Không thể dịch chính xác văn bản được mã hóa sang các ngôn ngữ khác. Cân nhắc sử dụng chuỗi tài nguyên Android để thay thế.
- Không xây dựng thư bằng cách ghép các đoạn văn bản. Những thông điệp như vậy không thể được dịch đúng.
Tôi có thể làm gì cho điều này? Bất cứ ai cũng có thể giúp giải thích những gì là điều gì và tôi nên làm gì?
Điều đó có nghĩa bạn nên chỉ chuyển một 'String' vào' setText() '. Ví dụ: 'setText (name)' thay cho 'setText (" "+ name)'. Bởi vì nếu bạn nối văn bản, nó sẽ không được dịch như bạn sử dụng văn bản Hardcoded như thông báo thông báo –
Nhưng nó sẽ cho 'NPE' nếu' name' là 'NULL' –
kiểm tra' name' không phải là 'NULL' trước khi sử dụng' setText() 'hàm. –