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

我想将内联实现移动到单独的函数,保持 onCreate 函数简短易读:

    私人无效OnBtnConnectClick(查看v){
        // 执行...
    }

现在我需要使用以下方式订阅按钮单击:

btn_client_connect.setOnClickListener(this.OnBtnConnectClick);

但这不是编译的。我只有这个丑陋的解决方案:

btn_client_connect.setOnClickListener(new Button.OnClickListener()
{
    public void onClick(查看 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使用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 Listeners为一种

您只需输入 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 回答