以下の方法でsetText()を使用してテキストを設定しています。
prodNameView.setText("" + name);
prodOriginalPriceView.setText("" + String.format(getString(R.string.string_product_rate_with_ruppe_sign), "" + new BigDecimal(price).setScale(2, RoundingMode.UP)));
その1つ目は簡単な使用法で、2つ目は書式設定テキストを使用してテキストを設定する方法です。
Android Studioは非常に興味深いので、Menuを使用Analyze -> Code Cleanup
して、上記の2行のような提案を受けました。
表示されたテキストをsetTextで連結しないでください。プレースホルダーでリソース文字列を使用します。少ない...(Ctrl + F1)
TextView#setTextを呼び出すとき:
- Number#toString()を呼び出して数値をフォーマットしないでください。小数区切りとロケール固有の数字は適切に処理されません。代わりに、適切なフォーマット指定(%dまたは%f)でString#formatを使用することを検討してください。
- テキストを表示するために文字列リテラル(「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
into だけを渡す必要がありますsetText()
。例:のsetText(name)
代わりにsetText("" + name)
。テキストを連結する場合、メッセージ通知としてハードコードされたテキストを使用するように翻訳されないため