zoukankan      html  css  js  c++  java
  • Android学习笔记-----------按钮的点击事件

    Android学习笔记-----------按钮的点击事件

     一.通过设置Button的onclik属性

    自定义Button的onclik属性,属性值就是按钮点击事件的方法名

    Button不需要指定Id,系统就可以执行此方法

    例如:

    1  <Button 
    2         android:layout_width="wrap_content"
    3         android:layout_height="wrap_content"
    4         android:text="第一个按钮"
    5         android:onClick="onclick"
    6         />
    public void onclick(View v){
            Toast.makeText(MainActivity.this,"这是第一个按钮",0).show();
        }

    二.设置按钮点击监听

    这种方法需要指定Button的Id,通过Id.setOnClickListener(OnClickListener)来执行点击按钮后需要执行的程序

    这种实现方式有三种写法

    接下来的集中实现方式都用以下布局文件

    1 <Button 
    2         android:id="@+id/bt_print"
    3         android:layout_width="wrap_content"
    4         android:layout_height="wrap_content"
    5         android:text="第一个按钮"
    6         />

    1.实现点击接口的方式

    这种方式需要MainActivity继承OnClickListener接口,实现其中的onClick方法.

    这种方式在处理多按钮的情况下比较好用,可以让代码的调理看起来更清晰.

    //实现OnClickListener接口
    public class MainActivity extends ActionBarActivity implements OnClickListener{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button bt_print = (Button)findViewById(R.id.bt_print);
            //由于MainActivity已经实现OnClickListener接口,所以参数为this
            bt_print.setOnClickListener(this);
        }
    
        @Override
        //重写onClick方法
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"这是第一个按钮", 0).show();
        }
        
    }

     2.内部类

    这种方式需要定义一个实现了OnClickListener接口的内部类

    特点与第一种方式相同.

     1 public class MainActivity extends ActionBarActivity{
     2 
     3     @Override
     4     protected void onCreate(Bundle savedInstanceState) {
     5         super.onCreate(savedInstanceState);
     6         setContentView(R.layout.activity_main);
     7         Button bt_print = (Button)findViewById(R.id.bt_print);
     8         //实例化内部类
     9         MyOnClickListner myOnClickListner = new MyOnClickListner();
    10         //参数为实现了OnClickListener接口的内部类对象
    11         bt_print.setOnClickListener(myOnClickListner);
    12     }
    13     //定义一个内部类,实现OnClickListener接口
    14     class MyOnClickListner implements OnClickListener{
    15 
    16         @Override
    17         //重写onClick方法
    18         public void onClick(View v) {
    19             Toast.makeText(MainActivity.this, "这是第一个按钮", 0).show();
    20             
    21         }
    22         
    23     }
    24 }

     3.匿名内部类

    通过匿名内部类来实例化一个OnClickListener的实现子类.

    这种方式会让代码看起来不怎么整洁,但是当布局中只有一个按钮可以用这种方式来节约时间.

    public class MainActivity extends ActionBarActivity{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button bt_print = (Button)findViewById(R.id.bt_print); 
            //定义一个匿名内部类,他是OnClickListener的实现子类
            bt_print.setOnClickListener(new OnClickListener() {
                
                @Override
                //重写onClick方法
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    
                }
            });
        }
    }
  • 相关阅读:
    JavaScript中getBoundingClientRect()方法详解
    webpack解惑:require的五种用法 (转)
    大白话讲解Promise(一)
    HTML5触摸事件(touchstart、touchmove和touchend) (转)
    JavaScript 数组中的 indexOf 方法
    arguments
    webpack入坑之旅
    webpack-dev-server
    webpackJsonp is not defined?
    CSS3——背景 文本 字体 链接 列表样式 表格
  • 原文地址:https://www.cnblogs.com/Jhope/p/5282175.html
Copyright © 2011-2022 走看看