我想要做的是动态地从strings.xml
获取特定文本。我认为它将涉及动态访问对象变量。
会有一个像:
public void getDynamicString(int level) {
text.setText(R.string.levelText_+level);
}
在strings.xml
中会有<string name="levelText_5">Text level 5</string>
我宁愿不创建包含所有文本资源的列表。可以用Java / Android做到这一点。
答案 0 :(得分:2)
使用Resources类的方法getIdentifier(name, defType, defPackage)
按名称获取资源的id。然后你可以从同一个班级做一个正常的getString(id)
。
编辑:谷歌的一点点透露:this。你可以在那里找到样品用法。
答案 1 :(得分:0)
尝试:getResources().getString(R.id.stringId)
。
答案 2 :(得分:0)
您所要做的就是致电
this.getString(R.string.levelText_5)
如果您在可以访问上下文或应用程序的程序区域中,例如ListAdapter调用:
context.getString(R.string.levelText_5)
或
application.getString(R.string.levelText_5)
如果您无权访问上下文或应用程序,请致电:
getResources().getString(R.String.levelText_5);
动态调用:
String name = "levelText_"+level;
int id = getIdentifier(name, "string", "com.test.mypackage");
getResources().getString(id);
答案 3 :(得分:0)
您应该查看使用Resources类的getIdentifier(String, String, String)。
答案 4 :(得分:0)
我有同样的问题,我用这个
修复了它okey,无论何时你想动态地从strings.xml访问一个字符串,我的意思是避免使用getResources()。getString(R.id.stringId),你创建一个你可以动态操作的字符串但是你想在我们的情况下uriq(“愚蠢的变量名”),然后你创建资源对象,在我的示例level_res并初始化它然后你使用这个方法称为getIdentifier()接受你的动态字符串作为参数,现在你简单将您的ressource传递给方法getstring(mysttring)
String uriq="level"+level_num;
level_res=getResources();
int mystring=getResources().getIdentifier(uriq,"string",getPackageName());
String level=level_res.getString(mystring);