Sto impostando il testo usando setText () nel modo seguente.
prodNameView.setText("" + name);
prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));
In quello il primo è un uso semplice e il secondo è l'impostazione del testo con formattazione del testo.
Android Studio è molto interessante, ho usato Menu Analyze -> Code Cleanup
e ho ricevuto suggerimenti su due righe come.
Non concatenare il testo visualizzato con setText. Usa stringa di risorse con segnaposto. meno ... (Ctrl + F1)
Quando si chiama TextView # setText:
- Non chiamare mai Number # toString () per formattare i numeri; non gestirà correttamente i separatori di frazione e le cifre specifiche della locale. Prendi invece in considerazione l'uso del formato String # con le specifiche di formato appropriate (% d o% f).
- Non passare una stringa letterale (ad esempio "Ciao") per visualizzare il testo. Il testo codificato non può essere tradotto correttamente in altre lingue. Prendi invece in considerazione l'utilizzo di stringhe di risorse Android.
- Non creare messaggi concatenando blocchi di testo. Tali messaggi non possono essere tradotti correttamente.
Cosa posso fare per questo? Chiunque può aiutare a spiegare qual è la cosa e cosa devo fare?
NPE
se name
èNULL
name
non avviene NULL
prima di utilizzare la setText()
funzione.
<string name="string_product_rate_with_ruppe_sign">Something %1$d</string>
E nel tuo codice java fai qualcosa del genere: prodOriginalPriceView.setText(getString(R.string.string_product_rate_with_ruppe_sign), price);
(puoi fare la formattazione nel file xml: [ developer.android.com/guide/topics/resources/…
String
insetText()
. Es:setText(name)
al posto disetText("" + name)
. Perché se concateni il testo, non verrà tradotto come se usassi il testo hardcoded come notifica del messaggio