在我的应用中,我做了一个Web请求,返回一些结果代码,例如: 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
是资源标识符。
这不起作用。知道怎么做吗?
答案 0 :(得分:15)
以简单的方式试试getResources().getIdentifier(name, defType, defPackage)
。
Toast.makeText(this, getResources().getIdentifier("r"+resultcode, "string",
getPackageName()), Toast.LENGTH_LONG).show();
答案 1 :(得分: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 :(得分:-1)
尝试如下,它为我工作。请使用parent.getApplicationContext()
。
String str = getString(R.string.r)+resultCode;
Toast.makeText(getApplicationContext(),
str, Toast.LENGTH_LONG).show();
答案 3 :(得分:-1)
从字符串获取资源ID的简单方法。这里resourceName是drawable文件夹中资源ImageView的名称,它也包含在XML文件中。我得到了#34; id&#34;你可以使用&#34; string&#34;。
int resID = getResources().getIdentifier(resourceName, "id", getPackageName());
ImageView im = (ImageView) findViewById(resID);
Context context = im.getContext();
int id = context.getResources().getIdentifier(resourceName, "drawable",
context.getPackageName());
im.setImageResource(id);