web-dev-qa-db-ja.com

R.drawable。 "someString"を置き換える方法

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

これどうやってするの?

25
Miloš

これは正しい構文ではありません。イメージリソースを変更する前に、すべてのリソースがIDを提供し、これらのIDがR.Javaファイルに格納されていることを知っておく必要があります。 IDは整数形式で保存され、アプリケーションではこれらのすべてのリソースを名前ではなくIDでフェッチできるため、最初に次の方法でリソースのIDをフェッチする必要があります。

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

次に、このresIDを使用します。

56
jeet

使用する

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName())
10

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

3
Boris Strandjev

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

name-画像の名前
defType-ケースに応じて描画可能になります
defPackage-アプリのデフォルトパッケージ(このアクティビティでgetPackage()を使用できると思います)

1
colegu

画像を「drawable」から「raw」フォルダに移動し、以下のように文字列値にアクセスすることで機能しました。 「res」ディレクトリの下に「raw」フォルダがない場合は、res-> new-> Android resource directoryを右クリックし、resourcetypeのドロップダウンで「raw」を選択します。

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

これを試して

   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
Adonias Vasquez