MyN*_*ero 28 resources android
我有一些字符串需要翻译和显示.这些字符串是变量.我在strings.xml文件中有翻译.
我想显示字符串的"翻译版本".例如,在Activity中:
String name = "Water";
TextView nameDisplay = new TextView(this).
nameDisplay.setText(name);
Run Code Online (Sandbox Code Playgroud)
在字符串文件中我有定义
<string name="Water">French word for Water</string>
Run Code Online (Sandbox Code Playgroud)
如果我使用这样的东西:
nameDisplay.setText(R.string.KnownName);
Run Code Online (Sandbox Code Playgroud)
它会奏效.但在我的情况下,名称存储在一个变量中,所以我不知道该怎么做才能使setText方法正常运行.
我目前的解决方法是
String translation = ""
if(name == "Water") {
translation = getString(R.string.Water);
}
else {
...
}
nameDisplay.setText(translation);
Run Code Online (Sandbox Code Playgroud)
......但这不能很好地扩展.
有什么建议?
我应该将翻译版本存储在变量中吗?
Kon*_*rov 50
您可以使用该方法将字符串转换为int标识符:
public static int getStringIdentifier(Context context, String name) {
return context.getResources().getIdentifier(name, "string", context.getPackageName());
}
Run Code Online (Sandbox Code Playgroud)
将活动作为上下文参数(或任何其他上下文实例)传递.然后您可以像往常一样使用getString()方法使用标识符.
请注意,从字符串到标识符的转换使用反射,因此可能不那么快,因此请谨慎使用.
private String getStringResourceByName(String aString)
{
String packageName = context.getPackageName();
int resId = getResources().getIdentifier(aString, "string", packageName);
return getString(resId);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22591 次 |
| 最近记录: |