2012-07-27 17 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()比较