我正在尝试随机选择我的ImageButton
使用的图片。
我认为此代码应该可以正常工作,但在将资源作为String
传递时似乎存在问题。
ImageButton getClickTime = (ImageButton) findViewById(R.id.clicker);
Random generator = new Random();
int generatedRandom = generator.nextInt(10) + 1;
String randomImage = "R.drawable.bg" + (String.valueOf(generatedRandom)) ;
Drawable replaceImage = getResources().getDrawable((int) randomImage);
getClickTime.setImageDrawable((Drawable) replaceImage);
我似乎对int
s,String
s,drawable
和CharSequence
s的演员阵容陷入了混乱。
如果我手动输入随机选择的图像资源,它会起作用。但是,如果我将String
传递给文本框,我可以看到它与我手动输入的内容完全相同。
谁能看到我在这里做错了什么?
提前致谢
答案 0 :(得分:3)
您的问题是您误解了Android如何使用资源ID。 R
文件包含映射到应用中包含的资源的int
个ID。您试图通过将drawable
引用转换为String
来引用int
资源。这是不可能的,也没有意义。
我建议您创建一个int[]
,其中包含您想要随机选择的所有drawable
的ID。
int[] imageIds = {
R.drawable.bg1,
R.drawable.bg2,
R.drawable.bg3,
R.drawable.bg4,
R.drawable.bg5
// etc for as many images you have
};
然后,随机选择其中一个drawable
ID并将其设置为ImageButton
。
ImageButton getClickTime = (ImageButton) findViewById(R.id.clicker);
Random generator = new Random();
int randomImageId = imageIds[generator.nextInt(imageIds.length)];
getClickTime.setImageResource(randomImageId);
答案 1 :(得分:0)
如果你想获得资源的id,你应该使用这样的东西:
int id = context.getResources().getIdentifier("resource_name", "drawable", context.getPackageName());
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), id);
答案 2 :(得分:0)
您可能想要使用所有图像的数组并通过随机索引获取它:
int[] all = {
R.drawable.bg1,
R.drawable.bg2,
};