1

s と a を比較する方法はありますか? このコードでは、回答として int があり、その場合はトースト メッセージdrawable == sを表示します。"Correct!"どんな助けでも大歓迎です。

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 値の混乱) の余地はないと思います。オブジェクトが作成されたことを確認したい場合は、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、そのような情報は含まれていません。

さらに良いことに、ID が何らかの形で間違っている場合にgetDrawablea をスローできるという事実を使用できます。詳細については、ドキュメント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 に答える