Android开发:随机数匹配对应图片失败,if语句与XML配合异常求助
兄弟,我懂你这困扰——想让随机生成的数字对应显示对应的图片,但就是摸不着门路把这俩关联起来对吧?结合你给的代码片段,我给你捋几个可行的解决办法:
核心思路:把随机数映射到图片资源
不管用哪种方法,核心都是让随机生成的整数和对应图片的资源ID建立关联,下面给你两种常用的实现方式:
方法一:动态根据资源名获取ID(灵活适合数字范围大的情况)
这种方式适合你不确定数字范围,或者后续可能扩展数字的场景,前提是你的图片资源命名要规范,比如数字3的图片命名为ic_number_3,数字5为ic_number_5,以此类推。
完整代码调整:
public class Second extends AppCompatActivity { ImageView cIma01; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout_file); // 替换成你的布局文件名 // 第一步:初始化ImageView cIma01 = findViewById(R.id.your_imageview_id); // 替换成你布局里ImageView的ID // 第二步:生成随机整数(这里以1-9为例,你可以根据需求调整范围) Random random = new Random(); int randomNumber = random.nextInt(9) + 1; // 第三步:根据随机数拼接资源名,动态获取对应图片ID String imageResourceName = "ic_number_" + randomNumber; // 参数说明:资源名、资源类型(drawable/mipmap)、当前包名 int imageResId = getResources().getIdentifier( imageResourceName, "drawable", getPackageName() ); // 第四步:设置图片到ImageView if (imageResId != 0) { // 先判断资源是否存在,避免崩溃 cIma01.setImageResource(imageResId); } else { // 可选:如果找不到对应资源,设置一张默认兜底图片 cIma01.setImageResource(R.drawable.ic_default_image); } } }
方法二:用数组预存资源ID(更稳定高效)
如果你的数字范围是固定的(比如1-6,模拟骰子),直接把所有图片的资源ID存到数组里,通过随机数作为索引取对应资源,这种方法更稳定,不会因为资源名拼写错误出问题。
代码示例:
public class Second extends AppCompatActivity { ImageView cIma01; // 预存所有数字对应的图片资源ID private int[] numberImageIds = { R.drawable.ic_number_1, R.drawable.ic_number_2, R.drawable.ic_number_3, R.drawable.ic_number_4, R.drawable.ic_number_5, R.drawable.ic_number_6 }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout_file); cIma01 = findViewById(R.id.your_imageview_id); // 生成随机索引(范围0到数组长度-1) Random random = new Random(); int randomIndex = random.nextInt(numberImageIds.length); // 直接设置对应图片 cIma01.setImageResource(numberImageIds[randomIndex]); } }
注意事项
- 资源命名要完全匹配,Android资源名是大小写敏感的,比如你命名的是
number_3就不能写成ic_number_3; - 如果你的图片放在
mipmap目录里,方法一中的第二个参数要改成"mipmap"; - 方法二中的数组长度决定了随机数的范围,比如数组有6个元素,就会生成0-5的随机索引,对应6张图片。
内容的提问来源于stack exchange,提问作者papejado
相关产品推荐
相关产品推荐

