0

画像のソースを設定しようとしていますが、エラーが発生します。

String test1 = pref.getString("test", "ERROR");
String drawable1 = "R.drawable."+test1;
myImage.setImageResource(drawable1);

設定int drawable1 = "R.drawable."+test1;してみましたが、うまくいきません。タイプの不一致であることは知っていますが、それを実現する方法がわからないようです。

問題をさらに細かく分析して、これをどのように機能させることができると思いますか?

String drawable1 = "R.drawable.myImage";
myImage.setImageResource(drawable1);

何か案は?

4

3 に答える 3

2

設定int drawable1 = "R.drawable."+test1;してみましたが、うまくいきません。

getIdentifier()文字列からリソースIDを適切に構築するには、を使用する必要があります。

int drawable1 = getResources().getIdentifier(test1, "drawable", getPackageName());

(これと同じことを示唆する他の2つの答えがあります...私は何かを逃したのですか、それとも彼らはすでに述べたことを繰り返したいと感じましたか?)


注意として、画像が大きい場合、またはドキュメントの読み込み中に顕著な遅延が発生する場合は、setImageResources()別の提案があります。

これにより、UIスレッドでビットマップの読み取りとデコードが行われるため、遅延が発生する可能性があります。それが懸念される場合は、代わりにsetImageDrawable(android.graphics.drawable.Drawable)またはsetImageBitmap(android.graphics.Bitmap)を使用することを検討してください。BitmapFactory

于 2013-01-11T20:22:58.397 に答える
0

あなたが持っていると仮定しますcontextthisコードがアクティビティ内にある場合に使用します)

int resId = context.getResources().getIdentifier(test1 , "drawable", cw.getPackageName());
myImage.setImageResource(resId);
于 2013-01-11T20:25:40.103 に答える
0

使用する

 int drawable1 =  getResources().getIdentifier(test1, "drawable", getPackageName();

名前でリソースを取得する方法の詳細については、このリンクを参照してください

于 2013-01-11T20:30:36.400 に答える