随机化图像视图上的图像,“if”功能工作奇怪

时间:2017-06-07 11:43:10

标签: android image android-studio if-statement random

我试图在点击按钮时随机化图像,如果图像是我想要的图像,请再次随机化,但如果不是,则关闭活动。

我无法在我的代码中随机化,它会一直关闭,但如果我删除对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();
                }
            }

4 个答案:

答案 0 :(得分:1)

由于您比较ActivityImageView,您的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总是假的,因为您要将Objectint进行比较,而这将永远不会成真。

不幸的是没有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();
    }