gpt4 book ai didi

android - 使用表示资源名称的变量访问 R.string 的内容

转载 作者:IT老高 更新时间:2023-10-28 22:01:37 25 4
gpt4 key购买 nike

我有一些字符串需要翻译和显示。这些字符串在变量中。我在 strings.xml 文件中有翻译。

我想显示字符串的“翻译版本”。例如,在 Activity 内部:

String name = "Water";
TextView nameDisplay = new TextView(this).
nameDisplay.setText(name);

在字符串文件中我有定义

<string name="Water">French word for Water</string>

如果我使用这样的东西:

nameDisplay.setText(R.string.KnownName);

它会起作用的。但在我的例子中,名称存储在一个变量中,所以我不知道该怎么做才能使 setText 方法正常运行。

我目前的解决方法是

String translation = ""

if(name == "Water") {
translation = getString(R.string.Water);
}
else {
...
}

nameDisplay.setText(translation);

...但这不能很好地扩展。

有什么建议吗?

我应该将翻译后的版本存储在变量中吗?

最佳答案

您可以使用该方法将字符串转换为int标识符:

public static int getStringIdentifier(Context context, String name) {
return context.getResources().getIdentifier(name, "string", context.getPackageName());
}

将 Activity 作为上下文参数(或任何其他上下文实例)传递。然后,您可以像往常一样通过 getString() 方法使用标识符。

请注意,从字符串到标识符的转换使用反射,因此可能不会那么快,因此请谨慎使用。

关于android - 使用表示资源名称的变量访问 R.string 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3538649/

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