我是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的程序,将设备放置在应用程序中。
答案 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);
}