Android點擊事件的四種寫法

 

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);
    }
 
}



發佈了70 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章