2012-07-27 33 views
1

反正有比較s到a?在這個代碼中,我有int s作爲答案,如果drawable == s那麼我想顯示一個"Correct!" Toast消息。任何幫助,將不勝感激。無論如何比較詮釋到drawable?ANDROID

btn1.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
      int s = R.drawable.exitbtn; 
      Resources res = getResources(); 
      Drawable drawable = res.getDrawable(R.drawable.exitbtn); 
      Object a=drawable; 
      if(a==s) 
      { 
       ImageView imageview =(ImageView)findViewById(R.id.imageView1); 
       Toast.makeText(getApplicationContext(), "CORRECT!", Toast.LENGTH_SHORT).show(); 
       imageview.setImageDrawable(drawable); 
       btn1.setText("1"); 
       btn2.setText("2"); 
       btn3.setText("3"); 
       btn4.setText("4"); 
     } 
    } 
} 
+0

你怎麼想 '比較' 呢?畫布的樣子是多少? – 2012-07-27 06:09:15

+2

這就好比把美國太空總署的火箭與橙汁比較一下。 – bos 2012-07-27 06:47:00

回答

2

比較一個Drawable實例的int沒有意義。你想做什麼?你想檢查方法res.getDrawable(R.drawable.exitbtn);是否返回正確的對象嗎?

,我認爲它是多餘的獲取從R-文件標識符:

int s = R.drawable.exitbtn; 

然後使用同樣的標識獲取對象:

Drawable drawable = res.getDrawable(R.drawable.exitbtn); 

,然後嘗試檢查它是否是真的通過比較ID來確定正確的對象。

我認爲在通過id獲取Drawable時,沒有錯誤的地方(特別是int值的混淆)。如果你想確保對象已經被創建,請檢查它是否爲null。

Drawable drawable = res.getDrawable(R.drawable.exitbtn); 
if(drawable != null){ 
    //do stuff 
} else { 
    //handle the situation where there's no drawable 
} 

此外,我認爲沒有辦法從Drawable對象中獲取id。由getDrawable返回的實例不包含此類信息。

更好的是,你可以使用這樣一個事實,即getDrawable可以拋出NotFoundException如果id在某種程度上是錯誤的。有關詳細信息,請檢查docs

1

試試這個

public void MyClick(View view) 
    { 
    Drawable fDraw = view.getBackground(); 
    Drawable sDraw = getResources().getDrawable(R.drawable.twt_hover); 

     if(fDraw.hashCode() == sDraw.hashCode()) 
     { 
     //Not coming 
     } 
    } 

或使用下面的代碼

使用getTag()和setTag()比較