string.xml 파일에 변수 사용 + toast 메시지에서 변수 값 사용하기

woniwon·2024년 3월 28일
0

Android

목록 보기
16/19
post-thumbnail

0. 왜 String 리소스를 사용해야 할까?

다국어 지원 및 접근성

  • 다국어 지원: strings.xml 파일을 사용할 때, 앱의 다국어 지원을 위해 각 지원하는 언어별로 별도의 strings.xml 파일을 관리할 수 있다. 여러개의 UI를 만들지 않아도 string.xml 파일만 바꾸면 사용이 가능하다. 이렇게 되면 여러 나라의 사용자에게 접근성이 좋은 서비스를 제공할 수 있다.
    예를 들어, 영어를 위한 values/strings.xml, 스페인어를 위한 values-es/strings.xml 등을 준비한다.

코드 최적화 및 클린코드

  • String 리소스 재사용 : 앱 전반에 걸쳐 반복적으로 사용되는 문자열이 있다면, strings.xml에 정의하여 재사용함으로써 코드의 중복을 줄일 수 있다. 이는 코드의 유지보수성을 향상시키는 데 도움이 된다.

  • Compose에서의 string 리소스 접근 : @Composable 함수 내에서 string 리소스에 접근할 때는 stringResource(id= R.string.resource_name)를 사용하여 간단하게 문자열을 불러올 수 있다. 이 방법은 Compose UI 구성요소 내에서 깔끔하게 리소스를 관리할 수 있게 해준다.

1. 출력하려는 변수가 하나일때

  • 문자열 : %s
  • 숫자 : %d
    <!-- Strings.xml -->
    <string name="deleted_message">%s이(가) 삭제되었습니다.</string>
  • String.format(resources.getString(R.string.strings에 정의된 이름 ),원하는 데이터)
    //Kotlin
    String.format(resources.getString(R.string.deleted_message),title)

2. 출력하려는 변수가 여러개 일때

  • %출력할순서$자료형 ex. %1%d -> 1번째로 숫자를 출력한다는 의미
    <!-- Strings.xml -->
    <string name="deleted_message">%ID 1$d,제목 %2$s이(가) 삭제되었습니다.</string>
  • strings.xml에 정의한 순서대로 해당하는 값을 넣어준다.
    //Kotlin
    String.format(resources.getString(R.string.deleted_message),id,title)

3. Toast 메시지에서 string.xml 파일 사용하기

  • stringResource(id=…) 이 함수는 @Composable 함수 내에서 사용되도록 설계되었기 때문에, Toast 같은 안드로이드 표준 UI 구성 요소 내에서 직접 stringResource를 사용하는 것은 불가능 하기 때문에, Context.getString()을 활용해야 한다.
  • title를 그냥 사용하게 되면 title이 MutableState<String>이기 때문에, 모든 정보가 다 뜨게 된다. 그래서 string 값만 가져오려면 .value를 사용해야한다.
Toast.makeText(
    context,
    context.getString(R.string.deleted_message, title.value),
    Toast.LENGTH_LONG
).show()
profile
단순 기록용 Velog 입니다.

0개의 댓글