Android之Button按钮点击事件的三种方法

来源:互联网 发布:苹果电脑web前端软件 编辑:程序博客网 时间:2024/05/21 07:09

通过三种方法实现Button的点击事件,通过泛型简化查找控件的id。

package com.carlos.button;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {    private Button button1;    private Button button2;    private static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button1 = getViewById(R.id.button1);        button2 = getViewById(R.id.button2);        // 第一种方法,匿名内部类实现点击事件。        button1.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {                showInfo(1);            }        });        // 第二种方法,调用外部定义的点击事件接口实现。        button2.setOnClickListener(listener);    }    // 定义接口给button2使用    OnClickListener listener = new OnClickListener() {        @Override        public void onClick(View arg0) {            showInfo(2);        }    };    // 第三种方法,xml布局里面定义button3的onClick事件    public void button(View v) {        showInfo(3);    };    // 用Logcat显示日志观察点击的哪一项    void showInfo(int i) {        Log.i(TAG, "你点击了第" + i + "个按钮");    }    // 通过泛型简化findViewById    @SuppressWarnings("unchecked")    <T extends View> T getViewById(int id) {        try {            return (T) findViewById(id);        } catch (ClassCastException e) {            Log.e(TAG, "Could not cast View to create class.", e);            throw e;        }    }}

xml布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button1" />    <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Button2" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="button"        android:text="Button3" /></LinearLayout>

Logcat日志中TAG标签的结果
Logcat日志中TAG标签的结果

0 0
原创粉丝点击