3

アプリケーションに 3 つのボタンを作成しました。これらのボタンをクリックすると、giveClue メソッドに移動します。

<ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="24dp"
        android:layout_height="22dp"
        android:layout_alignTop="@+id/lifeButtonsLbl"
        android:layout_toLeftOf="@+id/ImageButton2"
        android:src="@drawable/icon"
        android:onClick="giveClue" />

    <ImageButton
        android:id="@+id/ImageButton2"
        android:layout_width="24dp"
        android:layout_height="22dp"
        android:layout_alignTop="@+id/imageButton1"
        android:layout_toLeftOf="@+id/ImageButton3"
        android:src="@drawable/icon" 
        android:onClick="giveClue"/>

    <ImageButton
        android:id="@+id/ImageButton3"
        android:layout_width="24dp"
        android:layout_height="22dp"
        android:layout_alignRight="@+id/frameLayout1"
        android:layout_alignTop="@+id/ImageButton2"
        android:src="@drawable/icon"
        android:onClick="giveClue" />

注:別の方法を使用したくありません

アクティビティクラス:

public void giveClue(View view) {
        gameAdapter.giveClue(game);
    }

私の問題は、クリックされたボタンを無効にしたいということです。ボタンごとに異なる方法を使用したくありません。どのボタンがクリックされたかを特定して無効にすることはできますか。

ありがとうございました。

4

7 に答える 7

3

メソッドで確認しview.getId()giveClueR.id.imageButton1 などと比較します。通常、switch-case で行われます:)

于 2013-01-09T10:00:20.797 に答える
1

onClickview引数として取得するは、クリックされたビューを表すため、呼び出すだけでボタンを無効にできます。setEnabled(false)

public void giveClue(View view) {
    ((Button)view).setEnabled(false);  // disable button
}
于 2013-01-09T10:01:55.240 に答える
0

XMLにはTagのプロパティがあります

android:tag=""

3つのボタンすべてにタグを付けることができ、そのタグを使用してそれに応じてそれらを処理できます

于 2013-01-09T10:00:53.803 に答える
0

そんな..

public void giveClue(View view) {
    if( b1.getId() == view.getId() ){
      // it was the first button
    }
    else if( b2.getId() == view.getId() ){
      // it was the second button
    }
  }
于 2013-01-09T10:01:23.237 に答える