首页 > 解决方案 > 如何在 if/else 语句中为 setImageResource 使用 Drawable?

问题描述

我是 androidstudio 的新手,想通过以下方式比较 imageView:

我有 2 个 imageView,两者都使用我在应用程序开始时命名为“blank”的可绘制对象,使用 if/else 我想将这些图像添加到我拥有的另一个可绘制对象中,我尝试了以下操作:

private ImageView equipament1;
private ImageView equipament2;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


public void sentImg() {
    if (equipament1.equals(R.drawable.blank)){
  equipament1.setImageResource(R.drawable.reactor);
}
else if (equipament2.equals(R.drawable.blank)){
  equipament2.setImageResource(R.drawable.reactor);
} else  {finish();}

但它不起作用,该应用程序只是替换了第一个图像,如果我再次单击该按钮,则没有任何反应(此 if/else 在按钮内)。

我想检查第一个图像是否为空白,如果是,应用程序应该用图像“reactor”替换空白图像,或者,如果不是空白,应用程序应该移动到第二个空白图像,并替换它和这个继续更多2个空格。

我这样做是因为我正在构建一个类似于 LucidChart 的程序,您可以将设备放入应用程序中。

标签: androidif-statementimageviewdrawable

解决方案


问题是您第二次已经更改了比较器的值。

如果目标只是更改图像,则不需要 if/else。

private ImageView equipament1;
private ImageView equipament2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_analise)                        
    equipament1 = findViewById(R.id.equipamento1);
    equipament2 = findViewById(R.id.equipamento2);


public void sentImg() {
    equipament1.setImageResource(R.drawable.reactor);
    equipament2.setImageResource(R.drawable.reactor);
}

推荐阅读