You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中无法使用setImageResource修改ImageView资源的问题

解决setImageResource无法编译的问题

嗨,我看你遇到的问题很典型——编译器提示找不到setImageResource()方法,核心原因其实是你的pView参数是View类型,但setImageResource()是ImageView类独有的方法。

虽然你的XML布局里确实是ImageView控件,但onClick回调方法默认传入的参数是View父类类型,编译器没法确定它具体是ImageView,所以就找不到这个子类特有的方法了。

修复步骤:

  1. 首先把传入的View强制转换成ImageView类型
  2. 然后用转换后的对象调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:24:17