安卓按钮添加监听的三种方法

在安卓开发中,对按钮添加监听,是每一个app都需要用到的。通常我们会用三种办法来对按钮进行监听。下面我们哎说说着三种。我个人是比较喜欢匿名内部类的方法的。

第一种,匿名内部类

匿名内部类一般通过以下代码完成,顾名思义,通过传入匿名内部类来实现监听并写出对应的事件处理

btButton.setOnClickListener(new OnClickListener() {

@SuppressLint("ShowToast") @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();

}

});

第二种,通过当前类实现OnClickListener接口并在其必须实现的onClick方法中添加事件

public class MainActivity extends Activity implements OnClickListener

========================================
btButton2.setOnClickListener(this);

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();

}

第三种,在布局文件中添加 android:onClick属性来实现。这种和javascript的onclick写法是一样的,属性后面的值是方法名称。定义好后,需要在onCreate()方法中写出该方法,并且该方法必须用View 作为参数传入。比如你定义了 android:onClick="sing",那么你就必须在onCreate()中写上 sing(view v)方法。

<Button
android:id="@+id/bt3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@string/method"
android:text="@string/bt3" />

下面我们看看我写的Demo,

先看运行截图吧

然后是源代码

首先是布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.buttononclik.MainActivity" >

    <Button
        android:id="@+id/bt1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/bt1" />

    <Button
        android:id="@+id/bt2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/bt2" />

    <!--
         注意,下面两个按钮多了android:onClick属性。这个属性的作用就是当被点击
                        时候就调用设置的方法,"@string/method" 方法名可以随便起,这里我们引用
         "@string/method",值为onclickMethod。这个一点和javascript很像。也就
                       是说,其实这里我们是不通过findViewById()来取得按钮的。所以id是可以不用
                        设置的。那么下面我们设置id是因为我用了两个按钮,并着俩个按钮的
         android:onClick属性都设置为onclickMethod,所以如果要对相同方法名,我们
                      需要id作为判断,如果方法名设置为不一样,我们完全可以不用设置id。
                     这个方法需要在 onCreate()中写上对于的方法来处理监听事件。 -->

    <Button
        android:id="@+id/bt3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="@string/method"
        android:text="@string/bt3" />

    <Button
        android:id="@+id/bt4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="@string/method"
        android:text="@string/bt4" />

</LinearLayout>

然后是java文件 MainActivity.java

package com.example.buttononclik;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

    //定义要用到的属性
    private Button btButton;
    private Button btButton2;
    private String tipsString;
    private String tipsString2;
    private String tipsString3;
    private String tipsString4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载布局文件
        setContentView(R.layout.activity_main);

        btButton = (Button) findViewById(R.id.bt1);
        tipsString = this.getString(R.string.tips);
        tipsString2 = this.getString(R.string.tips2);
        tipsString3 = this.getString(R.string.tips3);
        tipsString4 = this.getString(R.string.tips4);

        btButton2 = (Button) findViewById(R.id.bt2);
        /*当前类实现了OnClickListener接口,
                          所以我们可以传入当前类对象this作为参数,并在下面方法写事件*/
        btButton2.setOnClickListener(this);

        //通过setOnClickListener方法并传入匿名内部类OnClickListener来实现监听
        btButton.setOnClickListener(new OnClickListener() {

            @SuppressLint("ShowToast") @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(MainActivity.this,tipsString,Toast.LENGTH_SHORT ).show();
            }
        });
    }

    //这个是继承了OnClickListener方法所要实现的方法,监听事件可以在这个方法写
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Toast.makeText(MainActivity.this, tipsString2, Toast.LENGTH_SHORT).show();
    }

    public void onclickMethod(View v){
        int id = v.getId();
        switch (id) {
        case R.id.bt3:
            Toast.makeText(MainActivity.this,tipsString3 , Toast.LENGTH_SHORT).show();
            break;
        case R.id.bt4:
            Toast.makeText(MainActivity.this,tipsString4 , Toast.LENGTH_SHORT).show();
            break;

        default:
            break;
        }
    }
}

然后是字符串文件strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">buttonOnclik</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="bt1">内部类实现监听</string>
    <string name="tips">通过匿名内部类实现监听</string>
    <string name="bt2">通过实现OnCllickListener接口实现监听</string>
    <string name="tips2">通过实现OnClickListener接口添加监听</string>
    <string name="method">onclickMethod</string>
    <string name="bt3">通过设置Onclick属性监听</string>
    <string name="bt4">作用是为了用id区分bt3</string>
    <string name="tips3">如果不是有要区别两个相同Onclick属性的按钮,id可以不用设置</string>
    <string name="tips4">第四个按钮被点击了</string>

</resources>
时间: 2024-10-13 01:50:37

安卓按钮添加监听的三种方法的相关文章

事件监听的三种方法

事件监听的三种方法: addTarget --用于监听一些点击.值改变等事件 代理       -- 监听一些开始.结束.选中某行等一些改变控制属性的一些事件 通知:上面都不行考虑使用通知 通知使用注意:只要监听通知就要移除通知,否则控制器销毁后,通知发送时就会找不到对象导致程序崩溃 文本框事件的监听: textfied代理只能监听开始编辑结束编辑,能否改变文字,不能监听改变文字后的情况,本项目需要 监听文本框中是否有输入,代理和addTarget都不适用. 文本框发出的三个通知: UIKIT_

Android开发系列(十四):ListView用法、对ListView监听的三种方法以及ListView中Adapter的使用方法

一.ArrayAdapter的介绍以及ListView的用法: Adapter是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面.就是用来绑定数据用的. 用一个小例子来介绍一下: public class FriendActivity extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCrea

extjs组件添加事件监听的三种方式 http://blog.sina.com.cn/s/blog_48d7f92901011cfn.html

extjs对组件添加监听的三种方式 在定义组件的配置时设置 如代码中所示: Java代码 xtype : 'textarea', name : 'dataSetField', labelSeparator:'', fieldLabel:'', hideLabel: true, allowBlank: true, height: mainPanelHeight*0.8, anchor:'99%', listeners:{'blur':function(){ alert(1); }} 对组件变量通过

Unity NGUI监听按钮点击事件的三种方法

NGUI版本:3.6.5 1.直接实现OnClick方法: 创建一个脚本,在脚本中实现OnClick()方法,绑定该脚本到按钮上,点击时就会实现OnClick函数内容: 2.使用SendMessage: 选择按钮后,打开Component——NGUI——Interaction,选择Button Message,为按钮添加一个UIButton Message组件: 然后设置UIButton Message中的参数即可: Target:接收按钮消息的游戏对象: Function Name:接收按钮消

Android 给按钮添加监听事件

在安卓开发中,如果要给一个按钮添加监听事件的话,有以下三种实现方式 1.方式一 public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取button按钮 Butt

Mac添加环境变量的三种方法

Mac添加环境变量的三种方法   法一:系统级,修改/etc/paths(每一行是一个环境变量)   法二:系统级,方便管理 1.创建一个文件: sudo touch /etc/paths.d/mysql 2.用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑): sudo vim /etc/paths.d/mysql 3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了) /usr/local/mysql/bin

【Android基础篇】TabHost导航栏添加标签页的三种方法

使用TabHost实现的导航栏有三种添加页面的方法,分别是直接在布局代码的tab里面添加:通过include标签添加:通过Java代码指定另一个Activity添加.下面是三种方法的示例: 直接在布局代码的tab里面添加标签页 使用拖控件拖出来的TabHost,在它的布局层次上会有三个LinearLayout,id分别为tab1.tab2.tab3,如下图所示: 然后我们可以新建一个Layout,在这个Layout里设计好界面后,将xml代码直接放入tab(1.2.3)的标签里,如下图所示,将设

JAVA中按钮的事件监听的三种方式

JAVA中的Swing组件,按钮的重点是进行事件的监听,可以通过调用JButton的addActionListener()方法.这个方法接受一个实现ActionListener接口的对象作为参数,ActionListener接口中只包含一个actionPerformed()方法,所以如果想把事件处理的代码与JButton进行关联,就需要如下的三种做法: 第一种: public class Button extends MyFrame {    private JButton        b1

Android增加监听的三种实现方式

在Android中,为一个按钮增加监听的方式有三种 1.匿名内部类 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_main); //获得布局中的按钮 btn = (Button) findViewById(R.id.btn); //为按钮增加匿名内部类监听 btn