gpt4 book ai didi

java - 在 Android 中使用动态 R 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:38 28 4
gpt4 key购买 nike

我在使用存储在我的 strings.xml 中的字符串时遇到问题,我在那里存储了大量字符串。它们对我非常有用,因为我正在使用它们来翻译我的程序。但是,现在我想动态地在这些字符串之间进行选择,但我不知道该怎么做。举个例子会更容易理解。假设我有以下字符串:

<string name="red">Red</string>
<string name="blue">Blue</string>
<string name="green">Green</string>
<string name="yellow">Yellow</string>

现在让我们假设我有一个函数,它向我传递一个带有颜色的字符串,例如 "yellow"。现在我只有一个解决方案,做一个非常大的开关(非常非常大,因为我有很多字符串),我认为必须有一个选项可以将我的函数的输出转换为正确的参数。我的意思是,如果我有一个返回 "yellow" 的函数,并且我想使用 R.strings.yellow,那么它们之间必须有一个链接。我不知道您是否可以使用任何类型的反射来实现这一目标。

你能帮帮我吗?

最佳答案

有一种方法比常规 android 方法“getIdentifier”快 10 倍,它不仅可以从字符串中获取值,还可以使用反射以非常简单的方式从可绘制对象或 R 文件中存在的任何其他资源中获取值,如下所示:

try {
//Get the ID
Field resourceField = R.string.class.getDeclaredField("yourResourceName");
//Here we are getting the String id in R file...But you can change to R.drawable or any other resource you want...
int resourceId = resourceField.getInt(resourceField);

//Here you can use it as usual
String yourString = context.getString(resourceId);

} catch (Exception e) {
e.printStackTrace();
}

希望这对您有所帮助。

问候!

关于java - 在 Android 中使用动态 R 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18707553/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com