2014-07-04 59 views
0

我遇到以下問題。我想寫一個隨機生成器,它爲我提供了一個隨機圖像R.id.drawable ...所以我做了一個隨機生成器,現在它正在選擇一個隨機字符串。但問題是:我無法繪製它,因爲我必須提供R.id.drawable.xxxx作爲整數變量而不是字符串。由於這是一個整數的名稱,因此我無法將其與Integer.Parse()進行轉換; 有沒有解決方案或有人知道如何選擇一個隨機整數?提前致謝。Java如何將字符串轉換爲整數名稱

回答

3

將所有可繪製值放入數組drawables。然後在0和drawables.length之間生成一個隨機值value,並通過drawables[value]訪問它。

另外,我覺得你的意思是:

R.drawable.xxxx 

相反的:

R.id.drawable.xxxx 
0

注意,變量名僅可在編譯時,不運行時。這意味着您需要爲您的問題找到完全不同的解決方案。

一種可能性是switch語句。假設你有2張圖片。你可以這樣做:

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

    case 2: 
     imageId = R.drawabel.image2; 
     break; 
} 
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?

0

您也可以使用該字符串得到標識符。

例如,只有它的字符串名稱來獲得R.drawable.ic_launcher的整數值,你可以這樣做:

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