안드로이드 앱 개발기 #28 - 문자열 리소스 파일 strings.xml 어떻게 작성하면 좋을까?
시작하며...
안드로이드 앱 프로젝트에서 리소스 파일들은 res 폴더 안에 추가, 관리합니다. 리소스는 이미지, 레이아웃, 스타일, 문자열, 기타 등등 여러 종류들이 있는데요. 오늘 얘기해보고자 하는 것은 문자열 리소스에 관해서입니다.
strings.xml
안드로이드 앱에서 문자열 리소스는 strings.xml 파일에 작성, 관리합니다. 문자열들은 여러 화면에서 사용되는 공용일 수도 있구요. 아니면 특정 화면에서만 사용하는 리소스일 수도 있습니다. 추가할 문자열의 포맷은 아래와 같습니다.
<string name="문자열_식별자">문자열 내용 작성</string>
strings.xml 파일 작성시 문제점
문자열 리소스는 필요할 때마다 추가하는 경우가 많습니다. 아무 생각 없이 strings.xml 파일의 뒷부분에 이들을 추가하면 나중에 뭐가 있는지 알아보기 굉장히 어려워지는 문제가 있습니다. 실제로 다른 개발자들이 관리했던 프로젝트의 strings.xml 파일을 열어보면 아무런 기준 없이 중구난방으로 나열되어 있는 문자열들을 보며 난감해 했던 적이 여러번 있었습니다.
strings.xml 파일은 어떻게 관리해야 할까?
연관성 있는 문자열들끼리 모아두는 방법이 좋지 않은가 합니다. 예를 아래 코드와 같이 표현해 봅니다.
(html comment removed: 공용 문자열 )
<string name="common_ok">OK</string>
<string name="common_yes">예</string>
<string name="common_no">아니요</string>
(html comment removed: 화면 A에서 사용되는 문자열 )
<string name="a_title">A 화면 제목</string>
<string name="a_guide">A에서는 이렇게 저렇게 합니다.</string>
(html comment removed: 화면 B에서 사용되는 문자열 )
<string name="b_title">B 화면 제목</string>
<string name="b_guide">B에서는 요렇고 저렇습니다.</string>
물론 이와 같은 방식을 지키기에는 복잡한 경우도 생길 수 있습니다. 그런 상황을 만나게 되면 어떻게 할지 추후 다시 이야기해 보겠습니다.
지난 안드로이드 앱 개발기
- #27 - 클린 아키텍처에서 domain 모듈
- #26 - 클린 아키텍처 구현을 위한 모듈 구성
- #25 - 스팀 관련 샘플 코드 만들면서 잘못한 점
- #24 - 시작 화면 구성 요소 식별하기
- #23 - 프로젝트 초기 화면 구성부터 대략적으로...
- #22 - Kotlin 코드로 JavaScript 코드를 실행할 수 있을까?
- #21 - 실습 도중 발생한 오류: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
- #20 - 클립보드에 텍스트 복사하는 함수 만들어 보기 (Kotlin)
- #19 - 데이터 바인딩 적용했으나 UI 자동 업데이트 되지 않는 문제
- #18 - 에뮬레이터에서 토스트 안 보이는 문제 (1)
- #17 - 유닛 테스트를 실행할 수 없는 문제 해결
- #16 - 잘 되던 유닛 테스트를 실행할 수 없는 문제
- #15 - 앱 재시작 코드
- #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제
- #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)
- #12 - Glide 활용하여 이미지 다운로드 받는 코드
- #11 - 처리할 수 없는 예외/크래쉬 발생시 앱 재시작하기
- #10 - 안드로이드 스튜디오 업그레이드 후 단축키가 안되면? (맥북)
- #9 - LiveData 객체에 동일 데이터 설정하면 observer 실행되는지 확인 목적의 샘플 프로젝트
- #8 - 안드로이드 스튜디오에서 빌드시 발생하는 Build Tools revision 31.0.0 오류
- #7 - 'UGC(사용자 생성 콘텐츠) 정책 미준수'로 심사 거절
- #6 - 뷰에 역마진 적용 불가시 translationX, translationY 속성 사용하기
- #5 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #4 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #3 - 무한 롤링 배너 만드는 법을 찾았으나, 높이를 wrap_content로 지정이 안 먹히는 문제점이...
- #2 - setContentView 메소드의 파라메터를 변경하지 않아서 발생한 화면 오류
- #1 - 페이스북 로그인 연동시 발생했던 문제들
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.
![default.jpg](https://steemitimages.com/640x0/https://cdn.steemitimages.com/DQmNwBDPMPvL1yaKWTYF4wxyUmxWiEJgAy1WZWTJyCha5wE/jswit_comment_initial.w320.jpg)