0

乱数を使用して imageButton をランダムな画像に設定しています。ドローアブルのファイル パスにランダムな int を使用する方法があるかどうか疑問に思っています。このコードは、無効な整数に対して実行時エラーを発生させますが、コンパイルは実行されます。

Random generator = new Random();
int chooseFirstPicture = generator.nextInt(2);
int imagePath1 = Integer.parseInt("R.drawable.image" + chooseFirstPicture);
btn1.setBackgroundResource(imagePath1);
4

2 に答える 2

1

Stringaを aに解析しているIntegerため、コードNumberFormatExceptionを実行するたびに a がスローされます。

String キーからリソース IDを取得する正しい方法は、次の関数を使用することgetIdentifier()です。

Random generator = new Random();
int chooseFirstPicture = generator.nextInt(2);
int resourceId = getResources().getIdentifier("image" + chooseFirstPicture, "drawable", getPackageName());
if (resourceId != 0) {
    //Provided resource id exists in "drawable" folder
    btn1.setBackgroundResource(imagePath1);
} else {
    //Provided resource id is not in "drawable" folder.
    //You can set a default image or keep the previous one.
}

詳細については、Androidリソース クラスのドキュメントを参照してください。

于 2013-06-24T19:45:59.407 に答える