AS对Button设置监听的四种方式

AS对Button设置监听的四种方式,第1张

AS对Button设置监听的四种方式

1.自定义内部类
2.使用匿名内部类
3.使用标题类加this关键字
4.使用xml中绑定

1.自定义内部类

方法比较麻烦,需要有第4步实例化自己写的内部类,而且内部类中写的方法与注册监听器距离太远,不方便阅读,匿名内部类就可以解决这一问题。
该方法

public class ButtonActivity extends AppCompatActivity{
//定义一个类继承app
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button); //绑定布局文件

        //1.获取按钮
        Button btn1 = findViewById(R.id.btn1);
        //4.点击事件:被点击时被触发的事件,并将该事件传入监听器
        MyClickListener mcl = new MyClickListener();
        btn1.setOnClickListener(mcl);       //2.为按钮注册点击事件监听器

    class MyClickListener implements View.OnClickListener{
    //3.自定义一个内部类MyClickListener,实现OnClickListener接口,实现一个接口必须重写其中的方法体,也就是下边的onClick方法。
            @Override
            public void onClick(View view) {
                //在控制台输出一条语句,e表示error,只是让输出为红色醒目而已,这是一个回调方法,意思就是只要你点击了这个按钮,就一定会执行写的 *** 作。
                Log.e("TAG","刚刚点击的按钮时注册了内部类监听器对象的按钮");
            }
    }
}
2.匿名内部类

该方法不需要单独一行来实例化自定义的内部类,而是直接在监听器中实例化一个匿名的内部类,内部类中的方法直接写在监听器中,方便阅读。但只用于有唯一 *** 作的按钮

public class ButtonActivity extends AppCompatActivity{
//定义一个类继承app
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button); //绑定布局文件

        //匿名内部类适用于有唯一 *** 作的按钮
        Button btn2 = findViewById(R.id.btn2);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //在控制台输出
                Log.e("TAG","用匿名内部类实现监听");
            }
        }
    }
}
3.使用标题类加this关键字

写一个内部类只是来实现OnClickListener接口,那为何不直接让外部的类来实现这个接口?这是只需要在刚开始的大类中implements OnClickListener接口即可。同时需要在后边重写接口中的方法体onClick。

public class ButtonActivity extends AppCompatActivity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_button);
        Button btn3 = findViewById(R.id.btn3);
        btn3.setOnClickListener(this); //使用this直接传入本类
}

    @Override
    public void onClick(View view) {
        Log.e("TAG","用本类实现了监听");
    }
4.直接在xml文件中绑定

用的最多
首先在xml文件中使用onClick属性绑定一个方法名“Aclick”

然后在java文件中写这个方法。该方法不需要设置.setOnClickListener,因为已经有android:onClick="Aclick"来绑定了。

//参数:被点击的控件对象
public void Aclick(View v){
//括号里是一个View对象,你点击的是什么这个View就是指什么。因为这个方法是点击事件的回调方法,不管点击的是text还是button都继承自View,所以直接传入View。
    switch (v.getId()){
        case R.id.btn4:
            Log.e("TAG","你点击了btn4");
            break;
    }
}
如果有用请点个赞吧

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5676920.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存