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
                
            }
        });
    }
}
原文地址:https://www.cnblogs.com/Jhope/p/5282175.html