在开发中为控件添加Listener是非常常见的工作,最简单的添加Listener方式可以这样:

findViewById(R.id.myButton).setOnClickListener(new View.OnClickListener() {    public void onClick(View v) {        // Do stuff    }});

采用上述方法添加Listener有个缺点就是如果控件太多的话,Listener数量也会增多,因此,可以采用如下的小窍门减少Listener的数量:

View.OnClickListener handler = new View.OnClickListener() {    public void onClick(View v) {        switch (v.getId()) {            case R.id.Button01: // doStuff                break;            case R.id.Button02: // doStuff                break;        }    }}findViewById(R.id.myButton).setOnClickListener(handler);findViewById(R.id.myOtherButton).setOnClickListener(handler);

在Android1.6里面,添加Listener的工作变得相当的简单(感觉更像在做网页编程!),具体步骤如下:

1.首先在layout里面定义Button并指定响应的Listener

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/hello"    /><Button android:text="Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content"android:onClick="myClickHandler01"/><Button android:text="Button02" android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content"android:onClick="myClickHandler02"/><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/hello"    /></LinearLayout>

其中以下这两行就是新增的特性:

android:onClick="myClickHandler01"

android:onClick="myClickHandler02"

2.在活动里面定义public的方法myClickHandler01、和myClickHandler02(注意这两个方法必须有一个View的形参)。

package com.ray.test;import android.app.Activity;import android.os.Bundle;import android.view.View;public class TestOnClickListener extends Activity {       @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);            }    public void myClickHandler01(View target){    setTitle("myClickHandler01");    }    public void myClickHandler02(View target){    setTitle("myClickHandler02");    }}

当然,你也可以采用这种写法:

将两个按钮设置到同一个Listener

android:onClick="myClickHandler"

android:onClick="myClickHandler"

package com.ray.test;import android.app.Activity;import android.os.Bundle;import android.view.View;public class TestOnClickListener extends Activity {       @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }    public void myClickHandler(View target){     switch (target.getId()) {         case R.id.Button01:          setTitle("myClickHandler01");             break;         case R.id.Button02:          setTitle("myClickHandler02");             break;     }    }}



更多相关文章

  1. android listview setselection 失效解决办法
  2. android经典面试题集锦
  3. 从setContentView说起
  4. Android(安卓)scrollview嵌套listview出现listview无法滑动冲突
  5. IdleHandler类在android中的使用
  6. Android(安卓)sdk更新过程中出现问题 (连接不上Google的服务资源
  7. Android(安卓)4.4.2 禁用通知栏下拉
  8. Android时钟的widget【安卓进化三十七】
  9. 【Android(安卓)Developers Training】 57. 在UI线程之外处理图

随机推荐

  1. Android(安卓)Exception 记录合集
  2. Android(安卓)判断APP是否在前台
  3. Android(安卓)get target app display na
  4. AMLogic Releases AML8726-MX Linux 3.0.
  5. Android(安卓)EditText用户友好的输入界
  6. android中Browser地址栏隐藏
  7. Android--数据库操作辅助类:SQLiteOpenHel
  8. Android(安卓)4.0 framework modify, emu
  9. Android---30---ProgressBar进度条的使用
  10. android 实现跳动频谱 DEMO