Android 点击事件,4种回调。

1.  继承监听接口。

2.  xml方式 : 设置 android:onClick

3. 内部类

4. 匿名类

---------------------------------------------------------------

1. 实现 OnClickListener 接口

package com.itheima28.caller;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

/**
 * @author andong
 * 程序刚运行就显示的界面
 */
public class MainUI4 extends Activity implements OnClickListener {

    /**
     * 当界面刚被创建时回调此方法
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        // 必须执行此句代码. 执行父类的初始化操作.
        
        setContentView(R.layout.main);        // 设置当前界面显示的布局.
        
        // 关联方法
        Button btnCall = (Button) findViewById(R.id.btn_call);  
        
// 注册监听 btnCall.setOnClickListener(
this); } //
// 如果用内部类,则外部类,不需要实现OnClickListener 接口
// class MyOnClickListener implements OnClickListener { // // @Override // public void onClick(View v) { // System.out.println("MainUI3 拨打号码.."); // call(); // } // } /** * 拨打电话的业务方法 */ private void call() { // 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作 } @Override public void onClick(View v) { System.out.println("MainUI4 拨打号码.."); call(); } }

2 .  xml的方式

在布局文件xml,添加onClick事件,然后,从代码中,

<Button 
    android:id ="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_contetn"
    android:text="单击"
    android:onClick="clicktest"     //添加事件
/>

从代码中,添加clicktest方法,原型,要和View.OnClickListener中没有实现的原型一样,即添加 (View v)的方法参数

// 方法的原型,与 OnClickListener 中定义的方法原型,一致。
public
void clicktest(View view){ Log.i("Test","以xml方式,设置事件") }

  

3.   内部类

这种方式,容易理解。

// 1. 声明控件
private Button btn;


@override
protected void onCreate(Bundle savedInstanceState) {
    supper.onCreate(savedInstanceState);
    
    setContentView(R.layou.activity_main);

    //  2. 关联控件
     btn =(Button)findViewById(R.id.button1);


     Listener list = new Listener();
    //  3. 注册监听
     btn.setOnClickListener(
           //实现接口的类对象
          list
    );
}


//内部类
class Listener implements View.OnClickListener {

   @override
   public  void  onClick(View v){
       //回调方法 
      Log.i("TEST","被单击了");
    }
  
}    
原文地址:https://www.cnblogs.com/sdgtxuyong/p/5780402.html