1

有什么办法可以比较 s 和 a 吗?在这段代码中,我有 int 作为答案,如果是,drawable == s那么我想显示一条"Correct!"toast 消息。任何帮助,将不胜感激。

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");
         }
    }
}
4

2 回答 2

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 值的混淆)。如果您想确保对象已创建,请检查它是否为空。

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

另外,我认为没有办法从 Drawable 对象中获取 id。返回的实例getDrawable不包含此类信息。

更好的是,如果 id 出现某种错误,您可以使用getDrawable可以抛出 a的事实。NotFoundException检查文档以获取详细信息。

于 2012-07-27T08:09:32.057 回答
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() 进行比较

于 2014-01-18T09:17:20.677 回答