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
반응형
'프로그래밍 언어 > Android' 카테고리의 다른 글
Android에서 프로그래밍 방식으로 현재 GPS 위치를 얻는 방법 (0) | 2021.07.07 |
---|---|
TextView에서 HTML을 표시하는 방법 (0) | 2021.07.05 |
Android : Button 또는 ImageButton에서 텍스트와 이미지 결합 (0) | 2021.07.05 |
Android에서 '앱이 설치되지 않음'오류 (0) | 2021.07.05 |
Android "Only the original thread that created a view hierarchy can touch its views.." (0) | 2021.07.02 |