【Android笔记】监听button点击事件

【Android】监听button点击事件

最近在看《第一行代码》学习Android,目前看到第三章。这本书可以说是手把手教学吧,里面的步骤和内容都非常详尽,对于一些需要开发中需要注意的过程也有所提及,可以说是一本不错的入门书籍。
但在阅读的过程中,经过案例都可以还原,我还是不能做到举一反三,很多知识点仍然处于模糊的状态,可能还是需要多次阅读再加上后面的学习才可以有更深刻的认识。
对于里面代码,其实很多的还不清楚是什么意思,大概是因为JAVA也掌握的不怎么好,今天刚了解到有关内部类的一些知识点,看到了一篇有关监听button点击事件的方法总结,转载如下,希望通过Android的学习也可以进一步巩固自己的JAVA知识。

1.Android开发-之监听button点击事件
http://www.cnblogs.com/xiao-chuan/p/6074075.html

一、实现button点击事件的方法

实现button点击事件的监听方法有很多,以下总结了常用的四种方法:
1. 匿名内部类
2. 外部类(独立类)
3. 实现OnClikckListener接口
4. 添加XML属性

每种方法都有其优缺点,那么接下来就详细讲解这四个实现方法

二、具体实现

  1. 匿名内部类:

    在Andorid开发中我们经常都会看到各种匿名内部类的使用,那么在实现button点击事件的时候也可以用匿名内部类。
    这样做的好处是:

    1. 不需要重新写一个类,直接在new的时候去实现想实现的方法,方便。
    2. 当别的地方都用不到这个方法的时候使用匿名内部类
    3. 高内聚,高内聚是设计原则之一,匿名内部类的特性之一就是拥有高内聚。

    但也有不足的地方:

    1. 当别的地方也需要同样的方法时还需要重新再写一次匿名内部类,容易使得代码冗余。
    2. 不方便后期的维护。

    使用方法如下:

    1. 添加一个按钮

      <Button
      android:"@+id/button1"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="方法一:匿名内部类"
      />
    2. 回到MainActivity中实现

      public class MainActivity extends Activity{
      
        private Button btn1;
      
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            /*
             * 方法一:使用匿名内部类实现button按钮的
             */
            //绑定button按钮
            btn1 = (Button) findViewById(R.id.button1);
      
            //监听button事件
            btn1.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast tot = Toast.makeText(
                            MainActivity.this,
                            "匿名内部类实现button点击事件",
                            Toast.LENGTH_LONG);
                    tot.show();
                }
            });
        }
      }
  2. 独立类(外部类):

    重新写一个独立的类来实现业务逻辑或是想要的效果。
    这样写的好处是:

    1. 一定情况下可以方便维护。
    2. 可以减少代码的冗余性,可以同时使用到多个地方。
      不足的地方时:
    3. 当只使用一次时浪费资源,程序的性能不高。
    4. 当有很多个方法时代码的可读性不高,此时不方便维护。

    使用的方法如下:

    1. 添加一个button按钮
    <Button
    android:"@+id/button2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="方法二:独立类"
    />
    1. 回到MainActivity中实现,外部类需要实现OnClickListener接口,并重写其中的方法
    public class MainActivity extends Activity {   
      private Button btn2;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);      
          /*
           * 方法二:独立类实现button实现
           */
          btn2 = (Button) findViewById(R.id.button2);
          btn2.setOnClickListener(new btn2Click(this));
      }
    }
    public class btn2Click implements OnClickListener {
    
      private Context context;   
      //重载btn2Click方法
      public btn2Click(Context ct){
          this.context=ct;
      }
    
      @Override
      public void onClick(View v) {
          Toast tot = Toast.makeText(
                  context,
                  "独立类实现button点击事件",
                  Toast.LENGTH_LONG);
          tot.show();    
      }
    
    }
  3. 实现OnClickListener接口:

    与独立类实现的是原理是一样的,优点和缺点也是大径相同,实现OnClickListener接口当中的onClick方法。

    使用方法如下:

    1. 添加一个Button按钮
    <Button
    android:"@+id/button3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="方法三:实现接口"
    />
    1. 回到MainActivity中实现
    public class MainActivity extends Activity implements OnClickListener {
    
       private Button btn3;
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
    
           /*
            * 方法三:实现OnClickListener接口
            */
           btn3 = (Button) findViewById(R.id.button3);
           btn3.setOnClickListener(this);
    
       }
    
       //实现OnClickListener接口中的方法
       @Override
       public void onClick(View v) {
           Toast tot = Toast.makeText(
                   MainActivity.this,
                   "接口OnClickListener实现button点击事件",
                   Toast.LENGTH_LONG);
           tot.show();
    
       }
    }
  4. 添加XML属性:

    我们可以给XML添加一个onClick属性来实现点击事件的监控。

    这样的好处是:更加便捷,代码量能够减少

    但是不足的地方是:每一次维护的时候都要去XML里改源码,不好维护。

    使用方法如下:

    1. 添加一个button按钮,并添加onClick按钮
    <Button
    android:"@+id/button4"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="方法四:添加xml属性"
    android:onClick="btn4Click"
    />
    1. 回到MainActivity中实现onClick按钮
    /*
    * 方法四:添加XML属性
    */
       public void btn4Click(View v){
           Toast tot = Toast.makeText(
                   MainActivity.this,
                   "添加XML标签实现button点击事件",
                   Toast.LENGTH_LONG);
           tot.show();
       }

    三、总结

    1. 在实现监听的时候都是需要两部走:

      (1)绑定button按钮

      (2)监听button按钮

    2. 具体使用什么方法实现它还是要看具体的需求,因为每个方法都有各自的好处和不足。如果只使用一次则推荐使用内部类的方法;日后多次使用则使用外部类的方法;实现接口的方法可以在原本的类中实现;但是XML里面添加属性的方法是不推荐的,毕竟不好维护。

    3. 内部类的使用在Android开发中经常用到,是非常重要的,需要好好掌握。

    4. Android开发中涉及很多按钮,但是监听的方法常用的就这几种,要学会举一反三

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值