Android點擊事件的四種寫法
一、Android點擊事件的四種寫法 1、點擊事件的第一種寫法 . 寫一個內部類.實現點擊事件的接口 bt.setOnClickListener(new MyButtonListener()); 2、點擊事件的第二種寫法,匿名內部類 bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callPhone();
}
});
3、點擊事件的第三種寫法:this-讓這個activity實現事件接口,一般測試時候用,正式上線的時候不用。
class Test implements OnClickListener{
@Override public void onClick(View v) { // TODO Auto-generated method stub } } 4、點擊事件的第四種寫法 在xml文件裏面定義 button點擊的時候 調用什麼方法
佈局xml配置:
android:onClick="dailPhone"
然後在當前Activity中實現該事件的接口,再寫一個dailPhone方法,
該方法名字與xml中配置的名字一樣,且必須是public,而且要一個View對象,
因爲底層的實現是反射且沒有getDeclaredMethod()
public void dailPhone(View view){
callPhone();
}
|
二、四種事件監聽應用場景 a) 內部類方式——註冊的事件源比較少
b) 匿名內部類方法——事件源又多一點
c) 當前activity中this——事件源更多
d) 在ui的xml文件中,配置onClick屬性(該方法不能設置爲private)
因爲底層的實現-反射沒有getDeclaredMethod()
——測試的時候用,實際開發中不用,莫名其妙多的方法。
|
三、代碼演示:
package cn.test.phone;
import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements OnClickListener { private EditText etDail; /** * activity創建的時候 調用的方法 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //1、設置activity顯示的內容:一個xml文件 setContentView(R.layout.phone_ui); //2、通過id尋找控件 etDail = (EditText) MainActivity.this.findViewById(R.id.et_dail); //尋找edittext 界面初始化的時候尋找控件 ,避免多次的查詢 Button btDail = (Button) this.findViewById(R.id.bt_dail); //3、給按鈕註冊一個點擊事件的監聽器 //點擊事件的第一種寫法 . 寫一個內部類.實現點擊事件的接口 //btDail.setOnClickListener(new MyButtonListener()); /*點擊事件的第二種寫法,匿名內部類 btDail.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } });*/ /* 點擊事件的第三種寫法:this-讓這個activity實現事件接口,一般測試時候用,正式上線的時候不用。 //btDail.setOnClickListener(this); */ } // 點擊事件的第四種寫法 在xml文件裏面定義 button點擊的時候 調用什麼方法 public void dailPhone(View view){ callPhone(); } //方式三:讓這個activity實現事件接口,一般測試時候用,正式上線的時候不用。 @Override public void onClick(View v) { callPhone(); } //方式一:點擊事件的第一種寫法 . 寫一個內部類.實現點擊事件的接口 /*private class MyButtonListener implements OnClickListener{ *//** * 當按鈕被點擊的時候調用 *//* @Override public void onClick(View v) { callPhone(); } }*/ private void callPhone() { String phoneNumber = etDail.getText().toString(); Intent intent = new Intent(); //設置意圖動作 intent.setAction(Intent.ACTION_CALL); //設置意圖數據 //intent.setData(Uri.parse(phoneNumber));//問題i1: intent.setData(Uri.parse("tel:"+phoneNumber)); //開啓意圖 MainActivity.this.startActivity(intent); } } |