0
public void onCreate(Bundle savedInstanceState) {
    ...
    btn_client_connect.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            // inline implementation goes here ...
        }
}

onCreate 関数を短く読みやすく保ちながら、インライン実装を別の関数に移動したいと思います。

    プライベート ボイド OnBtnConnectClick(View v) {
        // 実装...
    }

次に、次のようなものを使用してボタン クリックをサブスクライブする必要があります。

btn_client_connect.setOnClickListener(this.OnBtnConnectClick);

しかし、これはコンパイルされていません。私はこの醜い解決策しか持っていません:

btn_client_connect.setOnClickListener(new Button.OnClickListener()
{
    public void onClick(View v)
    {
        OnBtnConnectClick(v);
    }
});

これを行うより良い方法はありますか?

4

6 に答える 6

3
protected void onCreate(Bundle bundle){
   btn = findview....
   btn.setOnClickListener(buttonClcikListener);
}



private View.OnClickListener buttonClcikListener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // your code here 
    }
};
于 2012-09-30T11:36:45.200 に答える
2

メソッドは Java のオブジェクトではないため、これを行うことはできません。

あなたができることは、プライベートな内部クラスを作成することです(または別のクラス、それはあなた次第です):

private class MyListener implements OnClickListener {
    public void onClick(View v) 
    {
        OnBtnConnectClick(v);
    }
}

そして、する

this.onBtnConnectClick = new MyListener();
btn_client_connect.setOnClickListener(this.onBtnConnectClick);
于 2012-09-30T11:33:31.097 に答える
1

XML でレイアウトを作成している場合は、android:onClick属性 forを使用できますButton。メソッドの名前を定義する必要があります。

android:onClick="onClick"

そして、あなたの中にこのメソッドを実装しますActivity:

public void onClick(View v) {
  switch(v.getId()) {
    ...
  }
}

余分なコードは必要ありません。お役に立てれば。

于 2012-09-30T11:34:57.573 に答える
1

これにはいくつかの方法があります。

btn_client_connect.setOnClickListener(getButtonListener());

そして、そのメソッドは次のようになります。

public OnClickListener getButtonListener(){
    return new OnClickListener() {
        public void onClick(View v) {
            // inline implementation goes here ...
            OnBtnConnectClick(v);
        }
}

またはそれを行う別の方法:

btn_client_connect.setOnClickListener(new SomeButtonListener());

そして、そのクラスは次のようになります。

public (or private) class SomeButtonListener implements OnClickListener {
     public void onClick(View v) {
            // inline implementation goes here ...
            OnBtnConnectClick(v);
        }
}
于 2012-09-30T11:35:12.247 に答える
1

Click Listeners1つのように設定する他の方法があります

xml を入力するだけです

android:onClick="OnBtnConnectClick"

およびその他のKeppil提案

myButton.setOnClickListener(new myClickListener());

public class myClickListener implements OnClickListener {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

    }

}
于 2012-09-30T11:35:24.967 に答える
0

Methodクリック時にボタン (またはビュー) が XML 内で実行されるように定義できます。

続きを読むhttp://smartcloudblog.blogspot.com/2011/09/android-onclicklisteners-vs.html

于 2012-09-30T11:41:44.760 に答える