为什么我按 id XML 找不到图片

Why I can't find by id XML image

public class MainActivity extends AppCompatActivity {

    ListView listView;
    Button buttonForCP;
    ImageView img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        buttonForCP =(Button) findViewById(R.id.buttonForCP);
        img = findViewById(R.drawable.ic_img);//this problem 
                                    // ||||||||||||||||||||||||||
        buttonForCP.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                buttonForCP.setBackground(img);
        }
    });
}

由于某种原因无法读取 xml 图像编译器写入“类型 id 的预期资源” 我用谷歌搜索没有找到任何帮助

我假设 backButtonZerButton,您需要将 R.drawable.ic_img 替换为 R.id.backButtonZer

backButtonZer = findViewById(R.id.backButtonZer);

更新

要将背景设置为 Button,您可以使用 setBackgroundResource 方法:

buttonForCP.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        buttonForCP.setBackgroundResource(R.drawable.ic_img);
    }
});

此代码无效,因为 findViewById 在您的展开布局中通过 id 查找视图。但是您正在尝试查找可绘制资源 ID 并将其分配给一个毫无意义的 ImageView 对象。

ImageView img = findViewById(R.drawable.ic_img);

此外,对于这段代码,您还试图将 ImageView 设置为按钮背景,这也没有任何意义。您可以将 image/resource/drawable 设置为背景。不是 ImageView。

buttonForCP.setBackground(img);

你的问题有很多遗漏点,但也许你可以尝试这样的事情:

buttonForCP.setBackground(ContextCompat.getDrawable(context, R.drawable.ic_img);