私はテキストを設定していますテキストを設定する()以下の方法で。
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番1 つは、書式設定テキストを使用してテキストを設定することです。
Android Studioはとても興味深いので、メニューを使用しましたAnalyze -> Code Cleanup
そして、上記の 2 行について次のような提案がありました。
setText で表示されるテキストを連結しないでください。プレースホルダー付きのリソース文字列を使用してください。less... (Ctrl+F1)
電話するときテキストビュー#setText:
- 数値をフォーマットするために Number#toString() を呼び出さないでください。分数区切り記号やロケール固有の数字が適切に処理されません。代わりに、適切なフォーマット指定 (%d または %f) を指定した String#format を使用することを検討してください。
- テキストを表示するために文字列リテラル (例: "Hello") を渡さないでください。ハードコードされたテキストは他の言語に適切に翻訳できません。代わりに Android リソース文字列の使用を検討してください。
- テキスト チャンクを連結してメッセージを作成しないでください。このようなメッセージは適切に翻訳できません。
これに対して何ができるでしょうか? これが何なのか、そして私は何をすべきなのか説明してくれる人はいますか?
ベストアンサー1
varargs
リソースには、型の を受け取る getString のオーバーロード バージョンがありますObject
。getString(int, java.lang.Object...)正しいプレースホルダーを使用して strings.xml で文字列を正しく設定すると、このバージョンを使用して最終的な文字列のフォーマットされたバージョンを取得できます。例:
<string name="welcome_message">Hello, %1$s! You have %2$d new messages.</string>
使用してgetString(R.string.welcome_message, "Test", 0);
Androidは文字列を返します
"Hello Test! you have 0 new messages"
について setText("" + name);
最初の例はprodNameView.setText("" + name);
私には意味がわかりません。TextView は null 値を処理できます。名前が null の場合、テキストは描画されません。