티스토리 뷰

728x90
반응형

do not concatenate text displayed with setText



1
textView.setText("내용 " + content);
cs


이와 같이 하드코딩된 문자열을 넣으면 해당 경고가 발생한다.


경고 내용은 다음과 같다.


When calling TextView#setText:

  • Never call Number#toString() to format numbers; it will not handle fraction separators and locale-specific digits properly. Consider using String#format with proper format specifications (%d or %f) instead.
  • Do not pass a string literal (e.g. "Hello") to display text. Hardcoded text can not be properly translated to other languages. Consider using Android resource strings instead.
  • Do not build messages by concatenating text chunks. Such messages can not be properly translated.


파파고의 힘을 빌려 번역을 하자면 이렇다.



TextView#setText 호출할 :

  • 숫자를 포맷하기 위해 Number#toString() 호출하지 마십시오. 분율 분리기와 로캘별 자릿수를 제대로 처리하지 못할 있습니다. 대신 적절한 형식 지정(%d 또는 %f)() 함께 String#format 사용하는 것을 고려하십시오.

  • 문자열을 리터럴로 전달하지 마십시오(: "Hello"). 하드 코딩된 텍스트는 다른 언어로 적절하게 번역될 없다. 대신 Android 리소스 문자열을 사용하는 것을 고려하십시오.

  • 텍스트 덩어리 연결하여 메시지를 작성하지 마십시오. 그러한 메시지는 제대로 번역될 없다.



이를 해결하기 위해 


1
@SuppressLint("SetTextI18n")
cs



를 추가하여 경고를 무시하는 방법도 있지만, 근본적인 해결책은 아닐것이다.


추천하는 방법은 strings.xml 에 다음과 같이 추가하고


1
<string name="contents">내용 %s</string>
cs



사용하는 부분에서


1
2
String contents = "위의 내용은 다음과 같다.";
textView.setText(getString(R.string.contents, contents));
cs


와 같이 사용하면 된다.



+ References


https://tw.saowen.com/a/cc5451ef05d06e7abe844618caf10b6aab954d5216cc279b640e0a7123225e08




반응형

'프로그래밍 > Android' 카테고리의 다른 글

[Android] App is not indexable by Google Search  (0) 2019.03.13
[Android] Proguard  (0) 2019.02.19
[Android] Android Studio Debugging  (0) 2019.01.16
[Android] 코드 난독화  (0) 2019.01.14
[Android] Service FLAG  (0) 2019.01.08
공지사항
최근에 올라온 글