繁体   English   中英

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

[英]Java how to convert string to name of integer

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

把所有的绘制值的数组drawables 然后生成的随机值value 0和之间drawables.length ,并且通过访问它drawables[value]

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

R.drawable.xxxx

代替:

R.id.drawable.xxxx

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

一种可能是switch语句。 假设您有2张图片。 您可以执行以下操作:

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

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

考虑这个示例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
 }

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

请参阅此问题。 如何遍历R.java类的id属性?

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

例如,要获取仅具有字符串名称的R.drawable.ic_launcher的整数值,可以执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM