티스토리 뷰
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 |
공지사항
최근에 올라온 글