我想在我的资源文件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.

为什么对我来说不起作用?

推荐答案

您引用的链接似乎使用在运行时生成的字符串.字符串s.xml中的字符串不是在运行时创建的. 你可以通过

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

100 is a method of the 101 class. If you are inside a 102 or a 103 (which extend Context) you can use it like in this snippet.

也是note that the whole language dependency can be taken care of by the android framework.

更多信息请参见LocalizationProviding Resources.

Android相关问答推荐

列表的可变状态未正确更新

在Android Studio Iguana上运行示例代码时,Gradle Build错误

在不增加父行宽度的情况下添加延迟行或可滚动行

在Jetpack Compose中,如何判断屏幕是否已重新组合?

如何在Android Studio的LinearLayout中禁用阴影

Android从已连接的设备获得GATT

Android写/读二进制文件到共享存储

Android 14预测性背部手势-闪烁的白色背景色

Android v31 及更低版本中 ImageView 中的圆角

如何在 compose 中使用可变对象?

如何在卡片视图右侧添加箭头

了解 CoroutineScope(Job() + Dispatchers.Main) 语法

Gradle在我的Android Compose项目中继续推广依赖版本

如何在 Jetpack Compose 中将文本绘制在另一个对象的中心?

在 Jetpack Compose 中使用 ViewModel 实现 startActivity 的最佳实践

viewModel 的可变值状态不起作用

从expose 的 dropdownMenu 可组合、jetpack 组合中 Select 选项时,不会触发文本字段的 onValueChange

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

Android Studio Emulator Internet 连接问题仅是第一次

Android - 水平(从右到左)圆形背景 colored颜色 过渡