【问题标题】:Randomize images on imageview with "if" function working strange使用“if”函数随机化 imageview 上的图像
【发布时间】:2017-06-07 11:43:09
【问题描述】:

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

我无法在我的代码中随机化,它总是关闭,但如果我删除对 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

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


【解决方案1】:

你的Activity 总是关闭,因为你比较了ImageViewResource,它总是错误的。要提供您想要的逻辑,您可以使用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();
}

【讨论】:

    【解决方案2】:

    将此条件if (imgview1.equals(R.drawable.bg) 更改为

    if (cards[n ] == R.drawable.bg)

    您的问题是您将 ImageView 引用与 ImageResource 进行比较

    【讨论】:

      【解决方案3】:

      您的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();
          }
      }
      

      【讨论】:

      • 这里有一个问题,按钮只适用于下一张图片,不适用于现在
      【解决方案4】:

      这里 1)如果条件未命中一个括号。 (imgview1.equals(R.drawable.bg))

      2) 比较 Image 和 int 因为 R.drawble.bg 给你的资源 ID 不匹配..这就是为什么它总是去 else

      解决方案:

      ImageView imgview1 = (ImageView) findViewById(R.id.imgv1);
          imgview1.setImageResource(id);
          imgview1.setTag(id);
      
          if (imgview1.getTag() == R.drawable.bg) {
              imgview1.setImageResource(id);
          } else {
              finish();
          }
      

      【讨论】:

        猜你喜欢
        • 2013-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 2012-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多