android中点击事件的4种写法

android中获取到一些控件(比如说按钮)时,一般会为其添加点击事件,android中的点击事件一共有4中写法。

假设在布局文件中声明如下

    .......
    
    <Button
    
    android:layout_width="match_parent"
    
    android:layout_height="wrap_content"
    
    android:id="@+id/bt_1"
    
    />
    
    .......

一、通过匿名内部类

    主要的java代码如下,首先获取到该Button控件。

private Button bt_1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_1 = (Button) findViewById(R.id.bt_1);
        bt_1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                //点击后触发执行的代码
            }

二、通过内部类

    首先获取到该控件,再创建一个内部类,该内部类实现OnClickListener接口。

private Button bt_1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_1=(Button) findViewById(R.id.bt_1);
        bt_1.setOnClickListener(new MyListener());
    }
    class MyListener implements OnClickListener{
        @Override
        public void onClick(View v) {
            // 点击Button后触发执行的代码
        }
        
    }

三、在布局文件中添加onClick属性

    更改布局文件中 Button的属性

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/bt_1"
    android:onClick="click"
    />

添加点击事件时,直接声明一个方法,不必获取到控件

//    private Button bt_1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
//        bt_1 = (Button) findViewById(R.id.bt_1);
    }
    public void click(View view){
        //点击Button后触发执行的代码
        
    }

四、通过实现接口

    使用此方法时,主方法要实现OnClickListener 接口,并且覆写接口中定义的onClick方法

public class MainActivity extends Activity implements OnClickListener {
    
    private Button bt_1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_1 = (Button) findViewById(R.id.bt_1);
        //此处传入this即可
        bt_1.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        // 点击Button后执行的代码
        
    }
}
posted @ 2015-07-11 23:11  MockingBird、  阅读(503)  评论(0编辑  收藏  举报