2012-02-28 24 views
18

我的項目中有一些圖片。圖像的名稱存儲在一個字符串,我想setImageResource(R.drawable。「.....」);與圖像名稱的字符串,但問題是,這是行不通的。如何替換R.drawable。「someString」

我該怎麼做?

+0

圖像在哪裏? – Deva 2012-02-28 11:55:17

+0

在我的項目的drawable中。 – 2012-02-28 11:56:12

+0

它不是一個在Android的方式工作,你必須存儲圖像繪製和訪問它通過R.drawable.image – Newts 2012-02-28 11:56:18

回答

42

這不是一個正確的語法,你必須得到編譯器時間錯誤,在改變圖像資源之前你必須知道,所有資源都提供了一個id,這些id存儲在R.java文件中。 ID存儲成整數格式,並在你的應用程序,你可以通過這些標識,獲取所有這些資源不上名字,所以你需要先獲取資源的ID,通過:

String mDrawableName = "myimg"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

,然後使用該渣油。

+0

太好了,謝謝。 – 2012-02-28 12:11:04

10

使用

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName()) 
+0

太好了,謝謝。 – 2012-02-28 12:11:21

2

看到這個thread。它應該幫助你。基本上你需要得到標識符,然後使用setImageResource加載。

+0

未知的downvoter,我用我的答案做了什麼壞事? – 2012-02-28 12:11:03

+0

太好了,謝謝。 – 2012-02-28 12:11:30

+0

我已經給你一個積極的投票。 – 2012-02-28 12:12:08

1

public int getIdentifier(String name,String defType,String defPackage);

名稱 - 圖像
DEFTYPE的名字 - 這將是繪製你的情況
defPackage - 您的應用程序的默認包(我認爲你可以在此活動使用getPackage())

0

試這

String uri = "NAME"; 

    // int imageResource = R.drawable.icon; 
    int imageResource = getResources().getIdentifier(uri, null, getPackageName()); 

    ImageView imageView = (ImageView) findViewById(R.id.myImageView); 
    Drawable image = getResources().getDrawable(imageResource); 
    imageView.setImageDrawable(image); 
0

我知道它通過將圖像從'drawable'移動到'raw'文件夾並訪問字符串值如下所示。 如果'res'目錄下沒有'raw'文件夾,請右鍵單擊res-> new-> Android資源目錄,並在resourcetype下拉菜單中選擇'raw'。

String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));