Hiroyuan 2023-03-10 21:47 采纳率: 100%
浏览 47
已结题

关于无法解析setImageResource,如何解决?

遇到的现象和发生背景,请写出第一个错误信息

无法解析 'View' 中的方法 'setImageResource'


package com.example.radiobutton;

import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;

public class imageView extends AppCompatActivity {

    View img;
    Button btn1,btn2;
    private int[] imgs={
            R.drawable.a,
            R.drawable.b,
            R.drawable.c,
            R.drawable.d,
            R.drawable.e,
    };
    int index=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_view);
        img = findViewById(R.id.img);
        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn1.setOnClickListener(new mClick());
        btn2.setOnClickListener(new mClick());
    }
    class mClick implements View.OnClickListener
    {
        public void onClick(View v)
        {
            if(v == btn1)
            {
                if(index>0&&index<imgs.length)
                {
                    index--;
                    img.setImageResource(imgs[index]);
                }else
                {
                    index =imgs.length+1;
                }
            }
            if(v == btn1)
            {
                if(index>0&&index<imgs.length-1)
                {
                    index++;
                    img.setImageResource(imgs[index]);
                }else {index =imgs.length-1;}
            }


        }

    }
}
我的解答思路和尝试过的方法:加入import android.widget.ImageView包,依旧没什么用
  • 写回答

1条回答 默认 最新

  • 叶秋学长 全栈领域优质创作者 2023-03-10 22:01
    关注

    第一个错误信息是:

    无法解析 'View' 中的方法 'setImageResource'

    这个错误信息表明在代码中,尝试使用了View类中不存在的方法setImageResource()。根据代码可以看到,在onClick()方法里面调用了img.setImageResource(imgs[index]),而img类型为View,View并没有setImageResource()方法。

    解决方法是将img变量的类型从View更改为ImageView,因为setImageResource()方法是ImageView类中的。修改代码如下:

    java
    public class imageView extends AppCompatActivity {

    ImageView img;  // 修改这里的类型为ImageView
    Button btn1,btn2;
    private int[] imgs={
            R.drawable.a,
            R.drawable.b,
            R.drawable.c,
            R.drawable.d,
            R.drawable.e,
    };
    int index=1;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_view);
        img = findViewById(R.id.img);
        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn1.setOnClickListener(new mClick());
        btn2.setOnClickListener(new mClick());
    }
    
    class mClick implements View.OnClickListener {
        public void onClick(View v) {
            if(v == btn1) {
                if(index>0&&index<imgs.length) {
                    index--;
                    img.setImageResource(imgs[index]);
                } else {
                    index =imgs.length+1;
                }
            }
            if(v == btn2) {  // 修改这里的按钮编号
                if(index>0&&index<imgs.length-1) {
                    index++;
                    img.setImageResource(imgs[index]);
                } else {
                    index =imgs.length-1;
                }
            }
        }
    }
    

    }
    注意,另外还需要将activity_image_view.xml文件中img控件的类型也改为ImageView,以便findViewById()方法能够正确地找到该控件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器