2011-12-29 3 views
5

в моем приложении Я делаю веб-запрос, который возвращает некоторый код результата, например. 105. У меня есть строковые ресурсы, которые выглядят как тоAndroid динамические ресурсы String

<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

В приведенном выше коде вы использовали ресурс как r105, но при доступе к вам написал R.string.r Правильно ли это? –

+0

Теперь я понял ваш вопрос, я попробую дать мне 5 мин. –

ответ

13

Простой способ оплаты: getResources().getIdentifier(name, defType, defPackage).

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

отлично, спасибо! –

0

Попробуйте, как показано ниже, его работу для меня. Используйте для этого parent.getApplicationContext().

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

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

Я думаю, что getString (R.string.r) + resultCode не работает, потому что нет ресурса под названием «r» –

+0

Я дал часть своего кода, а не целую вещь. Я использовал его в своем проекте в XML-файле. –

+0

@ArtWorkAD - мое предложение, работающее на вас? –

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); 
+0

Я получаю сообщение об ошибке «% d не может форматировать аргументы java.lang.String» –

+2

А, я думал, resultCode был инт. Попробуйте% s для строки или просто сделайте «r» + resultCode. – aspartame

0

Простой способ получить идентификатор ресурса из строки. Здесь resourceName - это имя ресурса ImageView в папке с возможностью рисования, которая также включена в файл XML. Я получаю «id», вы можете использовать «string».

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); 
Смежные вопросы