我试图在点击按钮时随机化图像,如果图像是我想要的图像,请再次随机化,但如果不是,则关闭活动。
我无法在我的代码中随机化,它会一直关闭,但如果我删除对finish()
函数的调用,它将正常随机化。
我只是想让imageview识别没有sqlite DB的图像
@Override
public void onClick(View v) {
int[] cards={R.drawable.bg,R.drawable.bg1};
Random r = new Random();
int n = r.nextInt(2);
ImageView imgview1 = (ImageView) findViewById(R.id.imgv1);
imgview1.setImageResource(cards[n]);
if (imgview1.equals(R.drawable.bg){
imgview1.setImageResource(cards[n]);
}
else {
finish();
}
}
答案 0 :(得分:1)
由于您比较Activity
和ImageView
,您的Resource
始终关闭,因此始终为假。要提供所需的逻辑,可以使用setTag()
方法将标记设置为图像资源,然后进行比较:
ImageView imgview1 = (ImageView) findViewById(R.id.imgv1);
imgview1.setImageResource(cards[n]);
imgview1.setTag(cards[n]);
if (imgview1.getTag().equals(R.drawable.bg) {
imgview1.setImageResource(cards[n]);
} else {
finish();
}
答案 1 :(得分:0)
将此条件if (imgview1.equals(R.drawable.bg)
更改为
if (cards[n ] == R.drawable.bg)
您的问题是您正在将ImageView引用与ImageResource进行比较
答案 2 :(得分:0)
您if-condition
总是假的,因为您要将Object
与int
进行比较,而这将永远不会成真。
不幸的是没有ImageView#getDrawableId
所以你必须使用Imageview#setTag
来解决这个问题。
@Override
public void onClick(View v) {
int[] cards = {
R.drawable.bg,
R.drawable.bg1
};
int id = cards[new Random().nextInt(2)];
ImageView imgview1 = (ImageView) findViewById(R.id.imgv1);
imgview1.setImageResource(id);
imgview1.setTag(id);
if (imgview1.getTag() == R.drawable.bg) {
imgview1.setImageResource(id);
} else {
finish();
}
}
答案 3 :(得分:0)
这里 1)如果条件错过一个括号。 (imgview1.equals(R.drawable.bg))
2)比较图像与int因为R.drawble.bg给你的资源ID不匹配..为什么它总是去其他
解决方案:
ImageView imgview1 = (ImageView) findViewById(R.id.imgv1);
imgview1.setImageResource(id);
imgview1.setTag(id);
if (imgview1.getTag() == R.drawable.bg) {
imgview1.setImageResource(id);
} else {
finish();
}