Android Studio中无法使用setImageResource修改ImageView资源的问题
解决setImageResource无法编译的问题
嗨,我看你遇到的问题很典型——编译器提示找不到setImageResource()方法,核心原因其实是你的pView参数是View类型,但setImageResource()是ImageView类独有的方法。
虽然你的XML布局里确实是ImageView控件,但onClick回调方法默认传入的参数是View父类类型,编译器没法确定它具体是ImageView,所以就找不到这个子类特有的方法了。
修复步骤:
- 首先把传入的
View强制转换成ImageView类型 - 然后用转换后的对象调用
setImageResource()方法
修改后的Java代码如下:
public void click(View pView){ // 先把View转换成ImageView ImageView imageView = (ImageView) pView; if(getActivePlayer()== 1){ if(s1.getSymbol().equals("cross")){ imageView.setImageResource(R.drawable.circle); } else{ imageView.setImageResource(R.drawable.cross); } } else if(getActivePlayer()==2){ if(s2.getSymbol().equals("circle")){ imageView.setImageResource(R.drawable.circle); } else{ imageView.setImageResource(R.drawable.cross); } } imageView.setY(-1000); imageView.setAlpha(1); imageView.animate().translationYBy(1000).setDuration(1000); if (getActivePlayer() == 1){ setActivePlayer(2); String checker = "aktive player ist gerade" + getActivePlayer(); Log.i("INfo", checker); } else{ setActivePlayer(1); String checker = "aktive player ist gerade" + getActivePlayer(); Log.i("INfo", checker); } }
另外补充一点:你之前尝试的setBackgroundResource()是设置控件的背景图,而setImageResource()是设置ImageView的前景显示图(也就是app:srcCompat对应的内容),这两个方法的作用区域不一样,所以用setBackgroundResource()没法替换你想要的十字/圆形图标,这也是正常的。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

