프로그래밍 언어/Android

Android : 이름을 사용하여 리소스에서 문자열을 가져 오는 방법

Rateye 2021. 7. 5. 10:35
728x90
반응형
질문 : Android : 이름을 사용하여 리소스에서 문자열을 가져 오려면 어떻게해야합니까?

res\values\strings.xml 에서 UI에 대해 두 가지 언어를 사용하고 별도의 문자열 값을 갖고 싶습니다.

 

<string name="tab_Books_en">Books</string>
<string name="tab_Quotes_en">Quotes</string>
<string name="tab_Questions_en">Questions</string>
<string name="tab_Notes_en">Notes</string>
<string name="tab_Bookmarks_en">Bookmarks</string>

<string name="tab_Books_ru">Книги</string>
<string name="tab_Quotes_ru">Цитаты</string>
<string name="tab_Questions_ru">Вопросы</string>
<string name="tab_Notes_ru">Заметки</string>
<string name="tab_Bookmarks_ru">Закладки</string>

 

이제 앱에서 이러한 값을 동적으로 검색해야합니다.

spec.setContent(R.id.tabPage1);
String pack = getPackageName();
String id = "tab_Books_" + Central.lang;
int i = Central.Res.getIdentifier(id, "string", pack);
String str = Central.Res.getString(i);

내 문제는 i = 0 입니다.

내 경우에는 왜 작동하지 않습니까?

답변

참조하는 링크는 런타임에 생성 된 문자열로 작동하는 것 같습니다. strings.xml의 문자열은 런타임에 생성되지 않습니다. 다음을 통해 얻을 수 있습니다.

String mystring = getResources().getString(R.string.mystring);

getResources() Context 클래스의 메소드입니다. Activity 또는 Service (Context 확장) 내부에있는 경우이 스 니펫에서와 같이 사용할 수 있습니다.

또한 전체 언어 종속성은 Android 프레임 워크에서 처리 할 수 있습니다 . 각 언어에 대해 다른 폴더를 만들기 만하면됩니다. 영어가 기본 언어 인 경우 res/values/strings.xml 영어 문자열을 넣으십시오. 그런 다음 새 폴더 values-ru 만들고 동일한 이름의 러시아어 문자열을 res/values-ru/strings.xml 넣습니다. getString() @string/mystring 통해 XML의 문자열을 참조 할 때 기기 로케일에 따라 올바른 것을 선택합니다. res/values/strings.xml 항목은 대체 항목입니다. 사용자 로캘을 포함하는 폴더가없는 경우이 항목이 기본값으로 사용됩니다.

자세한 내용은 현지화리소스 제공 을 참조하십시오.

출처 : https://stackoverflow.com/questions/7493287/android-how-do-i-get-string-from-resources-using-its-name
728x90
반응형