gpt4 book ai didi

java - 如何通过在名称中添加 int 从 strings.xml 中获取字符串

转载 作者:搜寻专家 更新时间:2023-11-01 08:09:05 24 4
gpt4 key购买 nike

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 语句。谢谢。

最佳答案

Of course, it's not possible.

事实上,它是。您可以使用 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 是否存在(例如来自外部库)但无论如何都需要引用它,此方法也适用。

关于java - 如何通过在名称中添加 int 从 strings.xml 中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597463/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com