strings.xml이란?
앱 내에서 사용할 문자열을 정의하는 XML 파일.
strings.xml에 문자열 정의
먼저 res/values/strings.xml에 문자열을 정의합시다.
<string name="hello_text">어서오세요. </string>
Key-Value 방식으로 정의합니다.
name에 정의한 문자열이 키가 됩니다.
strings.xml에서 문자열 검색
xml 파일에서 검색하는 경우
예를 들어 TextView에 strings.xml에 정의한 문자열을 검색하는 경우 다음과 같이 작성합니다.
android:text="@string/hello_text"
@string/xxx에서 string 태그로 지정한 키를 지정하면 연결되어 있는 문자열을 얻을 수 있습니다.
Activity, Fragment 클래스로부터 취득하는 경우
String text = getString(R.string.hello_text);
getString 메소드의 인수에 R.string.xxx로 string 태그로 지정한 키를 지정하면 취득할 수 있습니다.
Activity, Fragment 이외의 클래스로부터 취득하는 경우
해당 클래스에 Activity나 Fragment로부터 Context 를 취득하고 있으면 문자열을 취득할 수 있습니다.
String text = context.getString(R.string.hello_text);
context가 getString 메서드를 보관 유지하고 있으므로 사용 가능하게 됩니다.
strings.xml을 사용하는 이점
1. 문자열을 일괄 관리할 수 있다
예를 들어, 앱의 Activity, Fragment, XML에서 문자열을 각각 정의하려고 합니다.
동일한 문자열을 100개 사용하려면 각 파일에 정의해야 합니다.
하지만 strings.xml을 사용하면 문자열을 하나 정의하고 100 곳에서 참조하도록 하면 어떨까요? 다음과 같은 이점이 있습니다.
- 일단 문자열을 정의하면 여러 번 문자열을 입력하지 않아도 좋으므로 typo (잘못 틀림)이 발생하기 어렵습니다.
- 사양 변경 등으로 문자열을 변경하지 않으면 안되는 경우는 strings.xml로 정의한 문자열을 변경하는 것만으로 끝난다(100개소 변경하지 않아도 되네요)
2. 다국어 대응을 손쉽게 할 수 있다
strings.xml을 사용하지 않은 경우
Activity 및 Fragment 문자열을 사용하는 곳에서
앱의 표시 언어를 검색하고 표시할 문자열을 결정해야 합니다.
대단한 수고이며, 대응하는 언어가 하나라도 추가되면 곳곳에 대응을 넣을 필요가 있다
strings.xml을 사용한 경우
아래와 같이 각 언어에 해당하는 strings.xml을 만듭니다.
- res/values-ko/strings.xml(한국어)
- res/values-en/strings.xml(영어)
이것만으로 대응 완료가 됩니다.
'개발 > 안드로이드 어플' 카테고리의 다른 글
안드로이드 어플 Fragment란 ? + 수명주기 (2) | 2022.12.05 |
---|---|
안드로이드 어플 Fragment 데이터 전달 인스턴스를 만드는 이유? (1) | 2022.12.04 |
⑦안드로이드어플개발 - AlertDialog 다이아로그 / 팝업창 출력 / 대화 / 모달창 (0) | 2022.11.29 |
⑥안드로이드어플개발 - Logcat 디버깅하는 방법 log출력|debug (0) | 2022.11.29 |
⑤안드로이드어플개발 - viewPager (0) | 2022.11.28 |
댓글