如何在setImageResource的If / else语句中使用Drawable?

时间:2019-03-03 08:37:09

标签: android if-statement imageview 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();}

但是它不起作用,该应用程序仅替换了第一张图像,如果我再次单击该按钮,则什么也没有发生(如果/否则在按钮内)。

我要检查第一个图像是否为空白,如果是,则应用程序应将空白图像替换为图像“反应器”;如果不为空白,则应用程序应移至第二个空白图像,然后替换它,这继续为2个空格。

之所以这样做,是因为我正在构建类似于LucidChart的程序,将设备放置在应用程序中。

2 个答案:

答案 0 :(得分:0)

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

如果目标只是更改图像,则不需要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);
}

答案 1 :(得分:0)

当用户单击您的按钮时,您想做两件事。您想显示一些图像,或者要呼叫finish()

我建议使用boolean作为状态标志,并比较状态而不是比较ImageView本身。这样会更容易,并使您的代码更易于阅读。

我创建了一个名为firstClick的标志,默认情况下将其设置为true。当用户单击您的按钮(在本示例中为button1)时,我们将对其进行检查并显示图像。然后我们将其设置为false, 因此下一次点击将调用finish()

private ImageView equipament1;
private ImageView equipament2;

// The current state of the Activity
private boolean firstClick = true;

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


    // Setting your OnClickListener
    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            if( firstClick ) {
                firstClick = false;
                sentImg();
            } else {
                finish();
            }
        }
    });
}

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