private int info = 1;
public void nextStep(View view)
{
TextView textInfo = (TextView) findViewById(R.id.textInfo);
textInfo.setText(R.string.info1);
info++;
}
单击一个按钮时,将调用方法nextStep
。每次点击一个按钮,我都会显示不同的信息,第一次是info1
字符串,下次是来自info2
的{{1}}字符串等。我想做那样的事情:
strings.xml
当然,这是不可能的。我该怎么办?我真的不想写一个大的if / else或switch语句。感谢。
答案 0 :(得分:3)
当然,这是不可能的。
实际上是。您可以使用getIdentifier
执行此操作:
private int info = 1;
public void nextStep(View view)
{
TextView textInfo = (TextView) findViewById(R.id.textInfo);
int myStrId = textInfo.getContext().getResources().getIdentifier("info"+info, "string", textInfo.getContext().getPackageName());
textInfo.setText(myStrId);
info++;
}
如果您不知道确切的名称, getIdentifer()
是一种获取存储在R
中的资源ID的方法。虽然它不是世界上最有效的方法,但在无法引用R
(例如您的情况)的情况下,它就足够了。
该方法返回与R
相同的ID;也就是说,getIdentifier("info1", "id", ...);
与R.id.info1
相同,因为R
只是它的编译版本。如果您不确定是否存在ID(例如来自外部库),但无论如何都需要引用它,此方法也适用。
答案 1 :(得分:1)
使用String数组或更好的List<String>
ArrayList<String>
,并使用XML中的字符串填充它。然后,您可以使用get(int index)
方法在列表中获取第i个字符串。
如果您正在使用JAXB来解组XML,您可以将其设置为为您创建列表而不必担心。