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","被单击了"); } }