2012-02-28 10 views
18

私のプロジェクトにはいくつかの画像があります。イメージの名前はStringに格納され、setImageResource(R.drawable。 ".....");イメージ名の文字列を使用していますが、問題はこれが機能していないことです。R.drawable。someStringの置き換え方法

どうすればいいですか?

+0

画像はありますか? – Deva

+0

私のプロジェクトのドロアブルにあります。 –

+0

アンドロイドではうまくいかないので、画像をドロウアブルに保存し、R.drawable.imageでアクセスする必要があります。 – Newts

答えて

42

これは正しい構文ではなく、イメージ・リソースを変更する前に、すべてのリソースがIDを提供することを知っておく必要があります。これらのIDはR.javaファイルに格納されます。 Idsは整数形式に格納され、アプリケーションであなたは名前ではなく、これらのidで、これらすべてのリソースを取得することができますので、あなたはで、最初はリソースのIDを取得する必要があります。この残油を使用し、その後

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

と。

+0

よかった、ありがとう。 –

10

使用

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

大変ありがとうございます。 –

2

このthreadを参照してください。それはあなたを助けるはずです。基本的には識別子を取得してからsetImageResourceを使用してロードする必要があります。

+0

不明なダウン・ダウン者、私の答えはどうしたのですか? –

+0

よかった、ありがとう。 –

+0

私は既にあなたに肯定的な投票を与えています。 –

1

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

名 - 画像
DEFTYPEの名前 - それはあなたのケースのために描画可能になります
defPackage - あなたのアプリのデフォルトパッケージ

0

試み(私はあなたがこのための活動にgetPackage()を使用することができると思います)この

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)); 
関連する問題