2017-11-12 30 views
-1

私はButtonの背景イメージを取得しようとしており、if statementで使用しています。 1000ミリ秒ごとにif statementを確認してください。これは私のコードです:タイマが動作していない文が動作しない場合

final Button btn_1 = (Button)findViewById(R.id.button1); 
    final Button btn_2 = (Button)findViewById(R.id.button2); 
    final Button btn_3 = (Button)findViewById(R.id.button3); 

    final ImageView a = (ImageView)findViewById(R.id.img1); 
    final ImageView b = (ImageView)findViewById(R.id.img2); 
    final ImageView c = (ImageView)findViewById(R.id.img3); 


    class CheckCondition extends TimerTask { 
     public void run() { 
       if (btn_1.getResources().equals(R.drawable.ic_luncher) && 
        btn_2.getResources().equals(R.drawable.ic_luncher) && 
        btn_3.getResources().equals(R.drawable.ic_luncher)){ 

       a.setVisibility(View.VISIBLE); 
       b.setVisibility(View.VISIBLE); 
       c.setVisibility(View.VISIBLE); 

      } 
      else 
      { 
       a.setVisibility(View.INVISIBLE); 
       b.setVisibility(View.INVISIBLE); 
       c.setVisibility(View.INVISIBLE); 
      } 
     } 
    } 
    Timer timer = new Timer(); 

    timer.schedule(new CheckCondition(), 0, 1000); 

しかし、それは動作しません。 imageviewsは、if statementに該当する場合でも常に表示されません。 何が間違っていますか?

+0

if文には、内側に来ていますか?それをチェックしましたか? –

+0

あなたは間違った方法でequalsメソッドを使用しています。この方法で比較することはできません –

+0

ボタンが画像を持ち、ボタンがbtn_1、btn_2、btn_3ではないので、画像があり、a、b、cを区別していないかどうかを確認する必要がありますか?btn_1、btn_2、btn_3 –

答えて

1

false戻り値の型 "リソース"(getResource)と "int"(描画可能)を比較しているため、常にfalseが返されます。

Resources resources = btn_1.getResources(); 
int drawable = R.drawable.ic_luncher; 

getConstantStateと同様の描画可能な比較をお探しの場合は、検証するのに役立ちます。

0

タグを使用することもできます。例えば

button1.setTag("R.drawable.ic_luncher"); 
button2.setTag("R.drawable.ic_luncher"); 
button3.setTag("R.drawable.ic_luncher"); 

if (button1.getTag() == "R.drawable.ic_luncher" && button2.getTag() == "R.drawable.ic_luncher" && button3.getTag() == "R.drawable.ic_luncher") { 

a.setVisibility(View.VISIBLE); 
b.setVisibility(View.VISIBLE); 
c.setVisibility(View.VISIBLE); 

}