2017-06-07 39 views
0

我想隨機圖片點擊一個按鈕時,如果圖像是什麼,我希望它是,再次隨機的,但如果它不是,關閉活動。隨機化圖像「如果」功能的工作奇怪

我不能隨機在我的代碼,它總是關閉的,但如果我刪除調用finish()功能,它通常會隨機。

我只想說的ImageView識別的圖像沒有一個SQLite數據庫

@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

不,它會返回0或1 –

回答

0

改變這種狀況if (imgview1.equals(R.drawable.bg)

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

你的問題是,你比較的ImageView參考ImageResource

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(); 
} 
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(); 
    } 
} 
+0

這裏有一個問題,按鈕只適用於下一個圖像,而不是現在 –

0

這裏 1)如果條件未命中一個括號。 (imgview1.equals(R.drawable.bg))

2)比較圖像的INT因爲R.drawble.bg給你資源的ID不match..thats爲什麼它總是轉到別的

解決方案:

ImageView imgview1 = (ImageView) findViewById(R.id.imgv1); 
    imgview1.setImageResource(id); 
    imgview1.setTag(id); 

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