2012-05-07 2 views
2

Хорошо, я не очень хорошо объяснил свою проблему, поэтому здесь пересматривается несколько раз.Загрузка заданного скрипта в строку со строкой

У меня есть опрос, The Survey Производит целое число. Я конвертирую это число в строковое имя файла. Это относится к пресетной строке, хранящейся в моих ресурсах. Исходя из выбора, сделанного по вопросам, в конце требуется другая строка.

Этот код генерирует нужную командную строку; R.string.C####

int Q1 = question1.getmCounter(); 
int Q2 = question2.getmCounter(); 
int Q3 = question3.getmCounter(); 
int Q4 = question4.getmCounter(); 

int qTotal = Q1 + Q2 + Q3 + Q4; 
String Test5 = "R.string.c" + qTotal; 

И Этот код находится внутри OnCreate для создания контента для TextView.

 textOut = (TextView) findViewById(R.id.ChmpNametxt); 
    textOut.setText(Test5); 

Теперь моя концепция заключалась в том, что будет читать test5 как «R.string.C####» и загрузить нужную строку. Это не делает этого, и я хотел бы знать, как я могу получить содержимое Test5 в командной строке.

Надежда someon может помочь мне-им ..

солода

Заранее спасибо

-Крис

ответ

1

Вы получили правильный ответ здесь уже: Creating Strings than can be used as Filepath - Eclipse/Android

В вашем случае:

String stringId = "c" + qTotal; //note: not the same as what you did with your Test5 
int resId = getResources().getIdentifier(stringId, "string", getPackageName()); 
textOut.setText(resId); 

Или мы misunderstandig вашего использования слова "командная строка"?

+0

Aha Я вижу, что происходит now..It не нравится getPackageName, хотя, мне нужно объявить что-то там? –

+0

ah не использовать getClass(), удалить эту часть, обновить ответ –

+0

ah эти комментарии нужно обновить вживую .. xD –

0

Вы должны получить reosurce идентификатор для текста, этот код получает идентификатор ресурса для вас:

ContextWrapper cw = this.getContext();// how you get this can be different, but you need a ContextWrapper from somewhere to use. 
int resId = cw.getResources().getIdentifier("c" + qTotal, "string", cw.getPackageName()); 

Затем вы можете использовать textOut.setText с переменной resId в качестве параметра.

+0

'Test5' неверно отформатирован для этого. См. Мой ответ. –

+0

И после вашего редактирования, похоже, что вы вставили мою первую версию кода, который забыл «вокруг» c :) –

+0

@Pulsar да, только что понял, что когда я увидел ваш ответ. Ред. –