Android动态字符串资源

时间:2011-12-29 12:51:57

标签: android android-resources

在我的应用中,我做了一个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是资源标识符。

这不起作用。知道怎么做吗?

4 个答案:

答案 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);