Java如何将字符串转换为整数名称

时间:2014-07-04 19:06:20

标签: java android random

我遇到了以下问题。我想写一个随机生成器,它为R.id.drawable提供了一个随机图像...所以我做了一个随机生成器,它现在正在选择一个随机字符串。但问题是:我无法绘制它,因为我必须提供R.id.drawable.xxxx作为整数变量而不是字符串。因为这是一个整数的名称,我无法用Integer.Parse()转换它; 有没有解决方案或有人知道如何选择随机整数?提前谢谢。

4 个答案:

答案 0 :(得分:3)

将所有可绘制值放在数组drawables中。然后在0和value之间生成一个随机值drawables.length,并通过drawables[value]访问它。

另外,我认为你的意思是:

R.drawable.xxxx

而不是:

R.id.drawable.xxxx

答案 1 :(得分:0)

请注意,变量名仅在编译时可用,而不是在运行时。这意味着您需要为您的问题找到完全不同的解决方案。

一种可能性是切换声明。假设您有2张图片。你可以这样做:

int imageId = -1;
switch(Math.Random(2)) {
    case 1:
        imageId = R.drawable.image1;
        break;

    case 2:
        imageId = R.drawabel.image2;
        break;
}

答案 2 :(得分:0)

考虑这个示例R文件。

public static final class id {
    public static final int s1=0x7f050000;
    public static final int s10=0x7f050009;
    public static final int s11=0x7f05000a;
    public static final int s12=0x7f05000b;
    public static final int s13=0x7f05000c;
    public static final int s14=0x7f05000d;
    public static final int s15=0x7f05000e;
    public static final int s16=0x7f05000f;
    public static final int s2=0x7f050001;
    public static final int s3=0x7f050002;
    public static final int s4=0x7f050003;
    public static final int s5=0x7f050004;
    public static final int s6=0x7f050005;
    public static final int s7=0x7f050006;
    public static final int s8=0x7f050007;
    public static final int s9=0x7f050008;
}

然后尝试使用以下代码进行导航..

import java.lang.reflect.Field;
/* ... */

 for (int i = 1; i < 16; i++) {
int id = R.id.class.getField("s" + i).getInt(0);
 //do something here
 }

使用您自己的逻辑随机选择一个。

参考此问题How do I iterate through the id properties of R.java class?

答案 3 :(得分:0)

您还可以使用该字符串获取标识符。

例如,要获取R.drawable.ic_launcher的整数值仅包含其字符串名称,您可以这样做:

getResources().getIdentifier("ic_launcher", "drawable", getPackageName());