Java Android-如何在button.setOnClickListener()中设置命名方法
我看到的大多数示例似乎在button.setOnClickListener()之类的调用中使用匿名方法。相反,我想传入一个在我正在使用的Activity类上定义的方法。在C#中,以下事件处理程序的Java/Android等价物是什么 其中:Java Android-如何在button.setOnClickListener()中设置命名方法,java,android,event-handling,Java,Android,Event Handling,我看到的大多数示例似乎在button.setOnClickListener()之类的调用中使用匿名方法。相反,我想传入一个在我正在使用的Activity类上定义的方法。在C#中,以下事件处理程序的Java/Android等价物是什么 其中: private void OnMyButtonClick(object sender, EventArgs ea) { } 本质上,我希望重用一个非匿名方法来处理多个按钮的点击事件。该方法的签名需要是以下内容 public void onMyButtonC
private void OnMyButtonClick(object sender, EventArgs ea)
{
}
本质上,我希望重用一个非匿名方法来处理多个按钮的点击事件。该方法的签名需要是以下内容
public void onMyButtonClick(View view){
}
如果不使用动态按钮,可以将设计器中的“onClick”事件设置为“onMyButtonClick”。对于屏幕上的静态按钮,我就是这样做的。我更容易将其与C#关联。视图的参数。setOnClickListener必须是类
视图的实例。OnClickListener
(视图类的内部类)。。对于您的用例,您可以将该内部类的一个实例保存在变量中,然后将其传入,如下所示:
View.OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
// do something here
}
};
myButton.setOnClickListener(clickListener);
myButton2.setOnClickListener(clickListener);
如果您需要跨多个子例程/方法使用此侦听器,可以将其作为成员变量存储在activity类中。Roman Nurik的答案几乎是正确的。OnClickListener()实际上是一个接口。因此,如果您的活动实现了OnClickListener,您可以将其设置为按钮单击处理程序
public class Main extends Activity implements OnClickListener {
public void onCreate() {
button.setOnClickListener(this);
button2.setOnClickListener(this);
}
public void onClick(View v) {
//Handle based on which view was clicked.
}
}
Net中没有委托,因此无法使用基于接口的函数。在.Net中,您可以通过使用委托来指定不同的函数。请注意,这是Android 1.6 IIRC的新功能。我没有意识到Java没有委托类型-感谢您澄清这一点!实际上,我刚刚看到这篇文章(实际上是一篇老文章)。关于他们决定不使用代理的一些有趣的评论。我不知道我是否同意,因为我喜欢在.Net中使用代理。
public class Main extends Activity implements OnClickListener {
public void onCreate() {
button.setOnClickListener(this);
button2.setOnClickListener(this);
}
public void onClick(View v) {
//Handle based on which view was clicked.
}
}