可变地访问资源“R.string”

时间:2014-01-19 20:50:00

标签: java android parsing android-resources

在我的R.string文件中,我有一些问题= R.string.question1,R.string.question2等。

当用户点击一个按钮时,只有一个数字作为文本,我想拉出那个数字(num)并在正确的位置访问该字符串(R.string.question [num])

OnClickListener clickQuestion2 = new OnClickListener(){

    @Override
    public void onClick(View arg0) {
        String num = "R.string"+".question"+((Button)arg0).getText().toString();
        int myQuestion = Integer.parseInt(num);
        question.setText(myQuestion);
        int myOption1 = R.string.question2_1;
        int myOption2 = R.string.question2_2;
        int myOption3 = R.string.question2_3;
        int myOption4= R.string.question2_4;
        option1.setText(myOption1);
        option2.setText(myOption2);
        option3.setText(myOption3);
        option4.setText(myOption4); 

这是按钮的onClickListener。我尝试了几种方法,但似乎没有任何效果。该错误告诉我“R.string.question2”,例如,是一个无效的字符串。所以我知道我将它传递给我想要的资源的字符串,我只是不知道如何告诉它我希望它读取该字符串,找到该资源并解析随附的int。与

基本相同
int myOption1 = R.string.question2_1;

一样。这些是从R.string.question(x)中提取的问题的可能答案,这些工作。如何获取资源的int,但每次单击按钮时都更改资源。

如果这是有道理的,谢谢你的帮助!

编辑:“问题”是TextView以及option1,option2等。

2 个答案:

答案 0 :(得分:3)

String dynamicString = "question2_1";
int resID = getResources().getIdentifier(dynamicString, "string",  activity.getPackageName()); 
String result = activity.getResources().getString(resID);

答案 1 :(得分:1)

使用字符串数组:

<string-array name="question2">
    <item>Sort By Price</item>
    <item>Sort By Magnitude</item>
    <item>Sort By Ingredient Names</item>
    <item>Sort By Extra Effects</item>
</string-array>

访问代码:

int myQuestion = Integer.parseInt(num);
option1.setText(question2[myQuestion]);