public void onCreate(Bundle savedInstanceState) {
...
btn_client_connect.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
// inline implementation goes here ...
}
}
我想将内联实现移到单独的函数中,使onCreate函数保持简洁和可读:
private void OnBtnConnectClick(View v) { // implementation... }
现在我需要使用以下内容订阅按钮点击:
btn_client_connect.setOnClickListener(this.OnBtnConnectClick);
但这不是编译的。我只有这个丑陋的解决方案:
btn_client_connect.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { OnBtnConnectClick(v); } });
有更好的方法吗?
答案 0 :(得分: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
}
};
答案 1 :(得分:2)
方法不是Java中的对象,因此您无法执行此操作。
你可以做的是创建一个私有的内部类(或一个单独的类,这取决于你):
private class MyListener implements OnClickListener {
public void onClick(View v)
{
OnBtnConnectClick(v);
}
}
然后再做
this.onBtnConnectClick = new MyListener();
btn_client_connect.setOnClickListener(this.onBtnConnectClick);
答案 2 :(得分:1)
如果您使用XML创建布局,则可以使用android:onClick
的{{1}}属性。您需要定义方法的名称:
Button
并在android:onClick="onClick"
:
Activity
无需额外代码。希望这会有所帮助。
答案 3 :(得分: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);
}
}
答案 4 :(得分: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
}
}
答案 5 :(得分:0)
您可以定义点击按钮(或视图)在XML中执行的Method
,
了解更多http://smartcloudblog.blogspot.com/2011/09/android-onclicklisteners-vs.html