1

Androidと同様の質問: setImageResource を使用してランダムな画像を設定しますが、別の答えを探していると思います。

リンクされた投稿で述べたように、これは:

int p = R.drawable.photo;
image.setImageResource(p);

写真1を表示しますが、次のようなものです:

String a = "R.drawable.";
String b = "photo";
String c = a+b;
int p = Integer.parseInt(c);
image.setImageResource(p);

しない。私はたくさんの画像と、すべての画像名を続ける配列を持っているので、次のような配列を埋めたいと思います:

int imageArray[] = new int[number_of_images];
for (int i = 0; i < numImages; i++)
imageArray[i] = ("R.drawable." + image_names[i]);

しかし、実行時エラーが発生します。このループを機能させる方法はありますか? または、画像 ID を配列にキューアップするより良い方法はありますか?

ありがとう!

4

1 に答える 1

1

このメソッドを使用すると、文字列に基づいてソース ID が再実行されます。2 番目と 3 番目のパラメーターは省略可能ですが、入れられる場合は入れます。

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

例:

int p = getIdentifier("photo","drawable")

または、常に ID を取得している場合は、次のような関数を作成できます。

public int getDrawableId(Context context, String name){
    return context.getResources().getIdentifier(name,"drawable", context.getPackageName());
}

0 が返されるかどうかを確認する必要があります。これは、見つからなかったことを意味するためです。

編集

あなたの例では、上記の関数を実装して、次のように変更してください。

int imageArray[] = new int[number_of_images];
for (int i = 0; i < numImages; i++)
imageArray[i] = getDrawableId(getApplicationContext(),"R.drawable." + image_names[i]);
于 2013-07-25T19:54:47.873 に答える