【Android】AS警告:Do not concatenate text displayed with setText. Use resource string with placeholders.
阿新 • • 發佈:2018-11-01
轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80167402
【錯誤】
Do not concatenate text displayed with setText. Use resource string with placeholders.
【翻譯】
不要在setText方法中顯示地連線字串。使用帶佔位符的資源字串。
【造成原因】
在TextView物件引用setText方法時,傳入的是自己連線的字串。
【舉例】
字串資源(strings.xml):
<resources> <string name="txtText1">text1:</string> <string name="txtText2">text2:</string> <string name="txtText3">text3:</string> <string name="txtText4">text4:</string> </resources>
Java程式碼:
TextView textView = new TextView(this); private void mySetText(int i) { textView.setText(getString(R.string.txtText1) + i); // 此處報錯:Do not concatenate text displayed with setText. Use resource string with placeholders. } private void mySetText(float f) { textView.setText(getString(R.string.txtText2) + f); // 此處報錯:Do not concatenate text displayed with setText. Use resource string with placeholders. } private void mySetText(String s) { textView.setText(getString(R.string.txtText3) + s); // 此處報錯:Do not concatenate text displayed with setText. Use resource string with placeholders. } private void mySetText(int i, float f, String s) { textView.setText(getString(R.string.txtText4) + i + "\t" + f + "\t" + s); // 此處報錯:Do not concatenate text displayed with setText. Use resource string with placeholders. }
【解決方法】
1、在資原始檔strings.xml中修改字串內容。
<resources> <string name="txtText1">text1:%1$d</string> <string name="txtText2">text2:%1$f</string> <string name="txtText3">text3:%1$s</string> <string name="txtText4">text4:%1$d\t%2$f\t%3$s</string> </resources>
2、在TextView物件引用setText方法時,傳入getString方法。
TextView textView = new TextView(this);
private void mySetText(int i) {
textView.setText(String.format(getString(R.string.txtText1), i));
}
private void mySetText(float f) {
textView.setText(String.format(getString(R.string.txtText2), f));
}
private void mySetText(String s) {
textView.setText(String.format(getString(R.string.txtText3), s));
}
private void mySetText(int i, float f, String s) {
textView.setText(String.format(getString(R.string.txtText4), i, f, s));
}
【解釋】
利用String類的format方法,識別傳入字串格式,然後再組合,以確保程式的穩定性。
格式說明:“%1”代表第1個引數;
“%2”代表第2個引數;
“%3”代表第3個引數;
“$d”代表整型;
“$f”代表浮點型;
“$s”代表字串。
【相關警告】
錯誤:Do not concatenate text displayed with setText. Use resource string with placeholders.
詳見:https://blog.csdn.net/u013642500/article/details/80166941
【說明】
本文可能未必適用所有情形,本人尚屬初學者,如有錯誤或疑問請評論提出,由衷感謝!