簡體   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