プロジェクトにいくつかの画像があります。画像の名前は文字列に格納されており、setImageResource(R.drawable。 ".....");画像名の文字列を使用しますが、問題はこれが機能していないことです。
これどうやってするの?
これは正しい構文ではありません。イメージリソースを変更する前に、すべてのリソースがIDを提供し、これらのIDがR.Javaファイルに格納されていることを知っておく必要があります。 IDは整数形式で保存され、アプリケーションではこれらのすべてのリソースを名前ではなくIDでフェッチできるため、最初に次の方法でリソースのIDをフェッチする必要があります。
String mDrawableName = "myimg";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
次に、このresIDを使用します。
使用する
getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName())
これを見てください thread 。それはあなたを助けるはずです。基本的に、識別子を取得し、setImageResource
を使用してロードする必要があります。
public int getIdentifier(String name、String defType、String defPackage);
name-画像の名前
defType-ケースに応じて描画可能になります
defPackage-アプリのデフォルトパッケージ(このアクティビティでgetPackage()を使用できると思います)
画像を「drawable」から「raw」フォルダに移動し、以下のように文字列値にアクセスすることで機能しました。 「res」ディレクトリの下に「raw」フォルダがない場合は、res-> new-> Android resource directoryを右クリックし、resourcetypeのドロップダウンで「raw」を選択します。
String avatar = ("Android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));
これを試して
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);