小编典典

Android:如何使用名称从资源中获取字符串?

all

我想在我的资源文件中为 UI 使用 2 种语言并为它们单独的字符串值res\values\strings.xml

<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

为什么它在我的情况下不起作用?


阅读 126

收藏
2022-03-04

共1个答案

小编典典

您所指的链接似乎适用于运行时生成的字符串。strings.xml 中的字符串不是在运行时创建的。你可以通过

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

getResources()Context类的方法。如果您在 aActivity或 a Service(扩展
Context)中,则可以像在此代码段中一样使用它。

请注意,整个语言依赖关系可以由 android 框架处理
。只需为每种语言创建不同的文件夹。如果英语是您的默认语言,只需将英语字符串放入res/values/strings.xml.
然后新建一个文件夹values-ru,将同名的俄语字符串放入res/values-ru/strings.xml. 从这一点开始,android
会根据您的设备区域设置选择正确的,无论是在您调用getString()时还是在通过 .xml 引用 XML
中的字符串时@string/mystring。fromres/values/strings.xml是后备的,如果您没有覆盖用户区域设置的文件夹,则该文件夹将用作默认值。

有关更多信息,请参阅本地化提供资源

2022-03-04