Android中Button的onClick實作方法大概是這樣的吧!
剛剛是看到有代碼将一個接口傳給了一個函數(是一個構造函數,沒考證是不是也可以傳給一個普通函數),之後我不懂為什麼,就百度了一下。
發現了這樣一個文章:http://blog.csdn.net/sunshine_mood/article/details/49874039
========================================
内容如下,轉載以上網址:
Android 通過接口傳值
接口傳值簡單了說,就是在需要傳值的那方定義接口,在接收資料的那方實作接口,資料就在需要實作的那個方法裡,千萬記住傳值方的Listener一定是接收資料方的Listener。
第一步:定義接口類:
public interface Listener {
void send(String s);
}
第二步:傳遞類發送資料:
public class Data {
public Listener mListener;//接口
public Data(Listener mListener) {
this.mListener = mListener;
}
public void sends(){
mListener.send("越努力越成功,越聚貴人!");//開始發送資料
}
}
第三步:接受類接收資料:
public class MainActivity extends Activity implements Listener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Data data = new Data(this);//執行個體化data類
data.sends();//啟動發送
}
@Override
public void send(String s) {
Log.e("tag: ",s);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yc0VGcwlmbz9VZ2F2cvw1cldWYtl2LcRXZu5ibkN3Yuc2bsJmLjlGdhR3cvw1LcpDc0RHaiojIsJye.png)
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5yc0VGcwlmbz9VZ2F2cvw1cldWYtl2LcRXZu5ibkN3Yuc2bsJmLjlGdhR3cvw1LcpDc0RHaiojIsJye.png)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
========================================
通過這個,我終于明白了Button的onClick實作方法:
據方的Listener。
第一步:定義接口類:
public interface OnClickListener {
void onClick(View v);
}
第二步:傳遞類發送資料:public class Button{ public OnClickListener mOnClickListener ;//接口
public Button(Context context, OnClickListener l) {
this(context, null);
this.mOnClickListener = l;
}
public void setOnClickListener(){()(){
mListener.onClick(v);//開始發送資料
}}第三步:接受類接收資料:public class MainActivity extends Activity implements OnClickListener{
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button= new Button(this);//執行個體化data類 data.setOnClickListener();//啟動發送 } @Override public void onClick(){(String s) {
Log.e("tag: ",s); }} 這段代碼不能運作,隻是由上面得到了啟發,原來直接看到 public interface OnClickListener {
void onClick(View v);
}
這段代碼,就想不通為什麼點選了按鈕就能調用,現在基本懂了。 其實腦子還是有些暈,在此記錄,以備以後檢視。 算是抛磚引玉吧!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34