事件處理之二:點選事件監聽器的五種寫法
阿新 • • 發佈:2019-02-03
首選方法二!
方法一:寫一個內部類,在類中實現點選事件
1、在父類中呼叫點選事件
bt_dail.setOnClickListener(new MyButtonListener());
2、建立內部類
private class MyButtonListener implements OnClickListener{
/**
* 當按鈕被點選的時候呼叫
*/
@Override
public void onClick(View v) {
callPhone();
}
}
方法二:使用匿名內部類
方法三:讓activity實現點選介面bt_dail.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { callPhone(); } })
1、實現點選介面
public class MainActivity extends Activity implements OnClickListener
2、呼叫點選事件方法
bt_dail.setOnClickListener(this);
3、實現介面方法
@Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_dail: callPhone(); break; default: break; } }
方法四、在layout XML檔案中定義button點選時所呼叫的方法
1、指定方法
<Button
android:id="@+id/bt_dail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="dailPhone"
android:text="撥打此號碼" />
2、定義方法
public void dailPhone(View view){ callPhone(); }
以下程式碼參考自《張澤華android視訊》
package com.itheima.phone;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private EditText et_phone;
/**
* activity建立的時候 呼叫的方法
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 設定activity顯示的內容
setContentView(R.layout.phone_ui);
//尋找edittext 介面初始化的時候尋找控制元件 ,避免多次的查詢
et_phone = (EditText) findViewById(R.id.et_phone);
//查詢到一個關心的按鈕
Button bt_dail= (Button) this.findViewById(R.id.bt_dail);
//給按鈕註冊一個點選事件的監聽器
// bt_dail.setOnClickListener(new MyButtonListener());
//2.點選事件的第二種寫法,匿名內部類
/* bt_dail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callPhone();
}
});*/
//3.點選事件的第三種寫法
//bt_dail.setOnClickListener(this);
//點選事件的第四種寫法
}
private void callPhone() {
String number = et_phone.getText().toString().trim();
if("".equals(number)){
Toast.makeText(MainActivity.this, "電話號碼不能為空", Toast.LENGTH_SHORT).show();
}else{
//TODO:撥打電話 啟用系統的撥號應用 把電話號碼傳給系統的應用.
// 打人 打醬油 動作+資料 泡茶 泡妞
Intent intent = new Intent();//意圖
intent.setAction(Intent.ACTION_CALL);//設定動作
intent.setData(Uri.parse("tel:"+number));
startActivity(intent);
}
}
/**
* 點選事件的第一種寫法 . 寫一個內部類.實現點選事件的介面
* @author Administrator
*
*/
private class MyButtonListener implements OnClickListener{
/**
* 當按鈕被點選的時候呼叫
*/
@Override
public void onClick(View v) {
callPhone();
}
}
//點選事件的第三種寫法 讓activity實現點選事件的介面
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_dail:
callPhone();
break;
default:
break;
}
}
//4.點選事件的第四種寫法 在xml檔案裡面定義 button點選的時候 呼叫什麼方法
public void dailPhone(View view){
callPhone();
}
}
第五種方法:
把事件處理單獨成一個類,基本沒什麼好處,除非此事件處理器經常被複用。