Android Studio中Drawable数组实现及类型转换错误求助
问题解决:Drawable无法转换为int错误
错误原因
你调用的getResources().getDrawable(int id, Theme theme)方法,第一个参数要求是Drawable资源的int型ID(比如R.drawable.ic_launcher),但你的imageArray[index]并非int类型,导致类型不匹配触发报错。
针对性解决方案
根据imageArray的实际类型,分两种情况处理:
情况1:imageArray是存储资源ID的int数组
如果你的数组定义是类似int[] imageArray = {R.drawable.img1, R.drawable.img2, R.drawable.img3};,先确认数组每个元素都是R.drawable下的int型资源ID。同时推荐使用兼容性更好的ContextCompat方法替代旧API:
Drawable ima = ContextCompat.getDrawable(this, imageArray[index]); image.setImageDrawable(ima);
情况2:imageArray是Drawable类型数组
如果你的数组直接存储Drawable对象(比如Drawable[] imageArray = {getResources().getDrawable(R.drawable.img1), ...};),无需再调用getDrawable,直接取用数组元素即可:
// 直接使用数组中已有的Drawable对象 image.setImageDrawable(imageArray[index]);
另外注意代码里的逻辑一致性问题:你判断index越界时用了imageList1.size(),但遍历的是imageArray,这里应该统一为imageArray.length,避免逻辑错误:
if(index > imageArray.length - 1){ index = 0; }
内容的提问来源于stack exchange,提问作者matias villegas
相关产品推荐
相关产品推荐

