0

我正在使用随机数将我的 imageButton 设置为随机图像。我想知道是否有办法在drawable的文件路径中使用随机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

嗯..您试图将“R.drawable.image1”字符串转换为不可能的整数。在编译期间,不会检查字符串中的内容,但是当您运行应用程序时,它会立即失败。

最好使用带有适当参数的 getResources().getIdentifier()(链接

我希望它有帮助:)

于 2013-06-24T19:32:13.210 回答
1

您正在将 a 解析String为 a ,因此您的代码每次运行时都会Integer抛出 a 。NumberFormatException

从 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 回答