[英]Android - How to set a named method in button.setOnClickListener()
我看到的大多數示例似乎在調用中使用了一個匿名方法,如button.setOnClickListener()。 相反,我想傳入我正在使用的Activity類上定義的方法。在C#中,以下事件處理程序連接的Java / Android等價物是什么?
Button myButton = new Button();
myButton.Click += this.OnMyButtonClick;
哪里:
private void OnMyButtonClick(object sender, EventArgs ea)
{
}
本質上,我想重用一個非匿名方法來處理多個按鈕的click事件。
Roman Nurik的回答幾乎是正確的。 View.OnClickListener()實際上是一個接口。 因此,如果您的Activity實現了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中,您可以通過使用委托指定不同的功能。
View.setOnClickListener
的參數必須是View.OnClickListener
類( View
類的內部類)的實例。對於您的用例,您可以將此內部類的實例保存在變量中,然后將其傳入,像這樣:
View.OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
// do something here
}
};
myButton.setOnClickListener(clickListener);
myButton2.setOnClickListener(clickListener);
如果跨多個子例程/方法需要此偵聽器,則可以將其作為成員變量存儲在activity類中。
方法的簽名需要是這個......
public void onMyButtonClick(View view){
}
如果您不使用動態按鈕,則可以將“onClick”事件從設計器設置為“onMyButtonClick”。 這就是我為屏幕上的靜態按鈕做的。 我更容易將它與C#聯系起來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.