浅学AS,设置Button点击事件的三种方式

1.在布局文件中指定onClick属性的方式设置点击事件

这里就是通过布局文件中Button控件的属性值onClick="click"实行回调函数click,代表着点击按钮有click方法响应。
在这里插入图片描述
回调函数代码如下,首先要通过id找到对应的按钮

myBtn_one.findViewById(R.id.btn_one);

要实现findViewById和后面的click函数得将btn设置成全局变量,同时因为是要实现按钮的点击,还需要一个强转类型具体代码如下:

public class MainActivity extends AppCompatActivity {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.btn);
        btn=(Button)findViewById(R.id.btn_one);
    }
    public void click(View view){
        btn.setText("按钮一已经被点击");
    }
}

全局变量与局部变量
全局变量也称为外部变量,它是在函数外部定义的变量。它不属于任何一个函数,它属于一个源程序文件。其作用域是整个源程序。

全局变量和局部变量相关内容:https://www.cnblogs.com/lzjdsg/p/10146480.html

2.匿名内部类的方法设置点击事件

public class MainActivity extends AppCompatActivity {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.btn);
        btn=(Button)findViewById(R.id.btn_one);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn.setText("按钮一已经被点击");
            }
        });
    }

因为我java也没有学好,还是个小白,为了还之前欠下的学债努力学习,后面我会更加完善java里面的各部分知识做成博客。这里主要提供代码。

Activity实现OnClickListener接口的方式设置点击事件

        btn = (Button) findViewById(R.id.btn_one);
        btn.setOnClickListener(this);

和上面一样通过ID找到该按钮,this代表当前这个Activity,但是setOnClickListener这个方法要接收一个onClick这个接口类型,所以可以通过Activity这个类来实现onClick这个接口类型

public class MainActivity extends AppCompatActivity implements View.OnClickListener

然后就会调用onClick这个方法,当点击后就会输出“按钮一已被点击的信息”

    public void onClick(View v) {
        btn.setText("按钮一已被点击");
    }

具体完整代码如下:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.btn);
        btn = (Button) findViewById(R.id.btn_one);
        btn.setOnClickListener(this);
}

    @Override
    public void onClick(View v) {
        btn.setText("按钮一已被点击");
    }
}

总结

这里主要是浅谈了一下为Button控件设置点击事件的三种方式,分别是:
1.通过布局文件中onClick属性click回调函数click实现点击,这是Android特有的新方法。
2.使用匿名内部类的方法设置点击事件。
3.Activity实现OnClickListener接口的方式设置点击事件,也就是将当前Activity实现View.OnClickListener接口。

有了上面自己列举这几个简单的代码来举例,书上的代码也就只是把一个按钮变成了三个按钮,也就挺容易理解的了。

书上代码如下:

package com.example.button;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;



public class MainActivity extends AppCompatActivity implements  View.OnClickListener{

    Button btn_one,btn_two,btn_three;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button);
        btn_one=(Button)findViewById(R.id.btn_one);
        btn_two=(Button)findViewById(R.id.btn_two);
        btn_three=(Button)findViewById(R.id.btn_three);
        btn_three.setOnClickListener(this);

        btn_one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                btn_one.setText("按钮一已经被点击");
            }
        });
    }

    public void click(View view){

        btn_two.setText("按钮二已经被点击");
    }

    public void onClick(View v){
        switch (v.getId()){
            case R.id.btn_three:
                btn_three.setText("按钮三已经被点击");
                break;
        }
    }
}

第一个按钮就是用的第二种方法,第二个按钮就是用的第一种方法,第三个按钮就是用的第三种方法。

第三个按钮onClick函数中还使用了switch语句,来判断是哪个按钮被点击,其实,可以直接用这种switch语句写三个按钮的点击事件。代码如下:

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;



public class MainActivity extends AppCompatActivity implements  View.OnClickListener{

    Button btn_one,btn_two,btn_three;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.button);
        btn_one=(Button)findViewById(R.id.btn_one);
        btn_two=(Button)findViewById(R.id.btn_two);
        btn_three=(Button)findViewById(R.id.btn_three);
        btn_one.setOnClickListener(this);
        btn_two.setOnClickListener(this);
        btn_three.setOnClickListener(this);

        }

    //具体判断一下点击的是哪个按钮
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_one:
                btn_one.setText("按钮一已经被点击");
                break;
            case R.id.btn_two:
                btn_two.setText("按钮二已经被点击");
                break;
            case R.id.btn_three:
                btn_three.setText("按钮一已经被点击");
                break;
        }
     }
}
发布了1 篇原创文章 · 获赞 2 · 访问量 57

猜你喜欢

转载自blog.csdn.net/q2020117976/article/details/104378300