1

状況は次のとおりです。一連のランダム化されたカスタム イメージボタンを動的に生成し、それらを TableRows、TableView、xml に追加するアクティビティがあります。このアクティビティには、これらのボタンのいずれかがクリックされたときに呼び出すメソッドもあります。ボタンには変数が含まれています。メソッドはこれらの変数を取得し、(同じアクティビティ内の) TextView に設定するので、すべてのボタンがこの 1 つのメソッドを使用できると考えます。これらのボタンが XML で定義されている場合、android:onClick="displayCell" を使用してメソッドを指定しますが、そうではありません。これらのボタンをアクティビティで生成しているため、これらのボタンに onClick を設定する方法はありますか、それとも使用する必要がありますか

button.setOnClickListener(new OnClickListener(){....});

このあたりのいくつかの回答で見たように、たくさんの面倒を経験しますか?私が抱えている問題は、メソッドの引数(ボタン)が最終的ではないため、onClick内からメソッドを呼び出すことができないように見えることです(ループで「ボタン」の束を作成しているので、それができるとは思わない):

button.setOnClickListener(new OnClickListener(){ public void onClick(View q){ button.getActivity().displayCell(button);// このようなことをしたいのですが、明らかにうまくいきません } });

4

4 に答える 4

1

はい、コモドロが述べているように、または onClickLIstener をクラスのメンバー変数にするか、各ボタンで「新規」を実行しないでください。

private OnClickListener mOnClickListener = new OnClickListener() {...};

ボタンを作成するとき:

button.setOnClickListener(mOnClickListener);

リスナーの onClick() 関数には、ボタン自体のビューが渡されます。この関数からボタン変数などにアクセスできます。

public void onClick(View v)
{
 ImageButton button = (ImageButton)v;
 // and access your button data via button object...
}
于 2012-07-31T16:31:41.840 に答える
1

アクティビティに OnClickListener を実装させてから (アクティビティにいると仮定して):

button.setOnClickListener(this);
于 2012-07-31T16:27:37.383 に答える
0

ボタンから継承するクラスを使用して、そこにOnClickListenerを追加してみてください。このような:

class MyButton extends Button {

        OnClickListener clicker = new OnClickListener() {
        public void onClick(View v) {

              displayCell(v);

        }
        };

}
于 2012-07-31T16:33:47.577 に答える
0

これに対する解決策は次のとおりです。

  • ボタンのさまざまなインスタンスを作成します(したがって、それらを最終的にすることができます)
  • メソッドを使用setId()して整数 ID を指定します (後で参照するため)。ID を aListに格納して、後で参照できます。
  • 作成した直後に onClickListeners を定義します。
于 2012-07-31T16:30:06.527 に答える