使用路径连接方法在Android中引用字符串资源(xml)的最佳方法是什么?
场景
我在xml中有多个字符串资源:
<string name="testString1">Test 1</string>
<string name="testString2">Test 2</string>
<string name="testString3">Test 3</string>
在我的应用程序中,我希望用户根据他们的选择来选择要返回的字符串资源。但是,将有数百种选择。所以我正在寻找某种:
textView.setText(getString(R.string.testString + selection));
任何建议都受到欢迎,
干杯
答案 0 :(得分:1)
摘自getIdentifier Android文档。
getIdentifier
public int getIdentifier (String name, String defType, String defPackage)
返回给定资源名称的资源标识符。一个充分 合格的资源名称的格式为“ package:type / entry”。首先 如果defType和两个组件(包和类型)是可选的 defPackage分别在此处指定。
解决方案:编写一种方法来根据给定的选择(例如1、2、3)来获取设计的字符串。
public String getStringBasedOnSelection(int selection) {
String name = "testString" + selection;
int resId = getResources().getIdentifier(name, "string", getPackageName());
return getString(resId);
}
在代码中使用
Log.i(TAG, getStringBasedOnSelection(1));
Log.i(TAG, getStringBasedOnSelection(2));
Log.i(TAG, getStringBasedOnSelection(3));
答案 1 :(得分:0)
将这三行全部设为
<string name="testString">Test %d</string>
这种用法
textView.setText(String.format(getString(R.string.project_id), selection)));
答案 2 :(得分:0)
您要通过字符串获取字符串资源标识符,该标识符始终是整数。 假设您在Activity类中:
int id = getResources().getIdentifier(selection, "string", getPackageName());
if (id != -1)
{
textView.setText(getString(id));
}
getResources()
是在Context
类中定义的方法,该方法返回一个Resources
对象。由于我以为您正在使用Activity
类(它是Context
的子类)中的内容,因此您可以调用getResources()
以及getString()
,而不必添加{{1 }}实例。
Context
是一个类,它定义了一组现在对您有用的方法,例如Resources
。看一下official documentation。
请小心检查不存在的资源。如果找不到资源,此方法将返回-1!