3

描画可能なフォルダーからランダムな画像を取得して、ImageView に設定しようとしています。すべての画像は "kitten" で始まり、変数 "kittensMax" にハードコードされた 1 から 17 までの数字が続きます。コードを実行すると、ここの 3 行目に NumberFormatException がスローされます。問題は、「R.drawable.kitten#」が int を表しているため、int に「解析」できる数値ではないことだと思います。助言がありますか?

Random r = new Random();
String drawableKitten = "R.drawable.kitten" + r.nextInt(kittensMax);
kittensImageView.setImageResource(Integer.parseInt(drawableKitten));
4

1 に答える 1

4

次のようなものを試してください:

int resID = getResources().getIdentifier("kitten" + r.nextInt(kittensMax), "drawable", getPackageName());

これは Resources クラスのメソッドを使用し、リソースの名前、タイプ、およびパッケージ名を使用してリソースの ID を見つけることができます。ドキュメントはこちらでご覧いただけます

id、などstringの他のタイプまたはリソースについても同様に機能しrawます。必要なリソースのタイプを反映するように 2 番目のパラメーターを変更するだけです。

于 2013-06-29T03:29:56.430 に答える