2017-05-02 6 views
1
public class MainActivity extends AppCompatActivity { 

    ImageButton[] ib; 
    int i = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ib = new ImageButton[10]; 

     for (int i = 0; i < ib.length; i++) { 
      { 
       String buttonID = "imageButton" + (i + 1); 
       int resID = getResources().getIdentifier(buttonID, "id", getPackageName()); 
       ib[i] = ((ImageButton) findViewById(resID)); 
       ib[i].setOnClickListener(this); 

      } 
     } 
    } 

    public void onClick(View v) { 

     for (int i = 0; i < ib.length; i++) { 
      if (ib[i].getId() == v.getId()) { 
       ib[i].setImageResource(R.drawable.img_b); 
      } 
      if (ib[2].getDrawable().getConstantState() == getResources().getDrawable(R.drawable.img_b).getConstantState()) { 
       ib[1].setImageResource(R.drawable.img_c); 
      } 

     } 

    } 
} 

「img_a」を含む10個のImageButtonがあります。 ImageButtonsの1つをクリックすると、img_aがimg_bに変わります。ImageButtonで画像を確認および変更する方法

ib [2]またはimagebutton2をクリックすると、ib [1]がimg_cに変わります。 私はgetDrawable()。getConstantState()を使用しました。エラーはありませんが、動作していません。 誰か助けてくれますか?

答えて

0

あなただけimagebutton2をクリックしたときに変更を適用する必要がある場合は、この

public void onClick(View v) { 

    for (int i = 0; i < ib.length; i++) { 
     if (ib[i].getId() == v.getId()) { 
      ib[i].setImageResource(R.drawable.img_b); 
     } 
    } 
    if (v.getId() = R.id.imageButton2) { 
     ib[1].setImageResource(R.drawable.img_c); 
    } 
} 
+0

はありがとうございます。 ib [2]とib [3]の両方がimg_bならば、ib [1]を変更したいのですが? '&&'だけを使用しても動作しません。 – Kew

+0

@keewボタンごとにonClickイベントが1回呼び出されるため、ボタンの状態を確認する必要があります。 – pablobu

関連する問題