본문 바로가기
개발/안드로이드 어플

안드로이드 어플 Strings 관리 텍스트 strings.xml

by 외노자개발 2022. 12. 4.
반응형

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(영어)

이것만으로 대응 완료가 됩니다.

반응형

댓글