2
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字符串等等strings.xml。我想做这样的事情:

private int info = 1;

public void nextStep(View view)
{    
    TextView textInfo = (TextView) findViewById(R.id.textInfo);
    textInfo.setText(R.string.info + info);
    info++;
}

当然,这是不可能的。我该怎么办?我真的不想写一个大的 if/else 或 switch 语句。谢谢。

4

2 回答 2

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(例如您的情况)就足够了。

该方法返回相同的 ID R;也就是说,getIdentifier("info1", "id", ...);与 相同R.id.info1,因为R只是它的编译版本。如果您不确定 ID 是否存在(例如来自外部库)但无论如何都需要引用它,此方法也适用。

于 2012-07-22T04:11:54.370 回答
1

使用字符串数组或更好的数组,List<String>例如 anArrayList<String>并用 XML 中的字符串填充它。然后就可以使用该get(int index)方法获取列表中的第 i 个字符串。

如果您使用 JAXB 来解组您的 XML,您可以设置它来为您创建列表,而不用大惊小怪。

于 2012-07-22T02:53:14.730 回答