安卓动态字符串资源

7

在我的应用程序中,我执行一个网络请求,返回一些结果代码,例如105。 我有像这样的字符串资源

<string name="r105">O.K.</string>
<string name="r106">Something went wrong.</string>
<string name="r333">Fatal error.</string>

现在我想做类似于这样的事情。
Toast.makeText(parent.getApplicationContext(),
        parent.getString(R.string.r+resultCode), Toast.LENGTH_LONG).show();

r+resultCode 是资源标识符时,这种方法不起作用。有什么想法吗?


在上面的代码中,您使用了资源r105,但是在访问时您写成了R.string.r。这样正确吗? - Yugandhar Babu
现在我明白了你的问题,我会尝试,给我5分钟。 - Yugandhar Babu
3个回答

16

可以简单地尝试使用以下语句:getResources().getIdentifier(name, defType, defPackage)

Toast.makeText(this, getResources().getIdentifier("r"+resultcode, "string", 
getPackageName()), Toast.LENGTH_LONG).show();

4

您可以使用getResources().getIdentifier(name, defType, defPackage)来实现。例如:

// Assuming resultCode is an int, use %s for String
int id = getResources().getIdentifier(String.format("r%d", resultCode), 
                                      "string", getPackageName());
String result = getString(id);

2
啊,我以为resultCode是一个整数。尝试使用%s代替字符串或只需使用"r"+resultCode。 - aspartame

-1

尝试以下代码,它对我有效。使用 parent.getApplicationContext()

String str = getString(R.string.r)+resultCode;

        Toast.makeText(getApplicationContext(),
                str, Toast.LENGTH_LONG).show();

1
我认为getString(R.string.r)+resultCode不能工作,因为没有名为“r”的资源。 - DarkLeafyGreen
我只提供了我的代码的一部分,而不是全部内容。我在我的项目中使用它在XML文件中。 - Yugandhar Babu
我已经更新了我的问题,现在它仍然无法工作,因为R.string.r失败了,没有资源r。 - DarkLeafyGreen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接