三个月前初学Android时,公司要求我们刚入职的应届小白写知识分享,于是结合实操的Demo写了一篇关于Button点击事件的分享。因为是初学的缘故,所以当时写的很细,恨不得把每一个操作步骤都写进去,趁着今天周末,就又整理了一下。希望能帮到和当初的我一样的Android初学者。

下面是这篇分享:

Button是按钮,是用于响应用户的一系列点击事件,使程序更加流畅和完整。Button实现点击事件有三种常用的实现方式,三种方法的具体实现步骤如下所示。

方法一:指定Button的onClick属性方式

  1. 首先在layout文件中指定onClick属性:

         android:onClick=”click”
  2. 然后在Activity中实现这个click方法

    public void click(View v){
    Log.i(“指定onClick属性方式”,”button is clicked”);
    }

注意:Activity中实现的方法名称要与onClick属性设置的名称一致。

Demo:
我们首先创建一个项目ButtonDemo01,并将主活动命名 MainActivity,接着在布局文件中放入一个Button按钮和一个TextView。Button按钮用于点击事件实现,TextView通过内容的变化,用于直观的展示点击效果。最后在Button按钮中添加一行属性,即android:onClick=”click”.
布局文件具体内容如下图所示:

<?xml version="1.0" encoding="utf-8"?>        

Button按钮中添加完属性后,我们则需在MainActivity中将Button中指定的方法写出,即click方法,这个方法用于实现将页面中TextView中的内容进行改变。于是首先我们定义TextView变量并通过findViewById方法对其进行赋值,然后就可以在click中使用该变量调用setText方法对TextView的值进行修改。

需要注意的是,我们在调用findViewById方法时,需进行强制的类型转换。

完整的MainActivity代码实现如下所示:

public class MainActivity extends AppCompatActivity {    private TextView tv_show;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_button);        tv_show=(TextView)findViewById(R.id.tv_show);    }    public void click(View v){        tv_show.setText("Onclick方式处理事件.");    }}

运行一下程序,该布局文件显示效果如下图所示:

当我们点击“ONCLICK方式”按钮时,TextView中的内容变成了“OnClick方式处理事件”,效果如下图所示:

即事件的处理成功通过设置onClick属性的方式得以实现。


方法二:匿名内部类方式
在Activity中添加匿名内部类

btn.setOnClickListener(new View.OnClickListener(){      @Override      public void onClick(View v){      Log.i(“匿名内部类方式”,”button is clicked”);   }});

即首先要找到需要点击的Button名字,随后给它添加一个事件监听setOnClickListener,当Button被点击后就会被成功监听,随后其中的onClick方法会被调用。

Demo:
我们首先创建一个项目ButtonDemo02,并将主活动命名 MainActivity,接着在布局文件中放入一个Button按钮和一个TextView。Button按钮用于点击事件实现,TextView通过内容的变化,用于直观的展示点击效果。实现方式与方法一致,布局文件具体内容如下所示:

<?xml version="1.0" encoding="utf-8"?>        

接下来我们需要做的是在MainActivity中添加具体实现代码。此时除了定义TextView变量之外,我们还需定义Button变量,再通过findViewById方法对变量进行赋值。变量定义并赋值后,我们则可以开始为Button按钮添加事件监听,即使用按钮的变量值调用事件监听setOnClickListener。
需要注意的是,OnClickListener()是一个接口,对于我们初学者来说,这里给人的感觉是new了一个接口,其实不是这样的。new的话它肯定是new了一个类的对象,而这个类是实现了OnClickListener接口,所以之所以叫匿名内部类,是因为创建了一个类的对象,但是这个类的名字是什么我们并不知道,所以叫匿名的内部类对象。
接下来和方法一中一样,我们需在onClick方法中调用setText方法实现TextView中的内容变化。完整的MainActivity代码实现如下所示:

  public class MainActivity extends AppCompatActivity {    private TextView tv_show;    private Button btn_anonymous;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_button);        tv_show= (TextView)findViewById(R.id.tv_show);        btn_anonymous=(Button)findViewById(R.id.btn_anonymous);        btn_anonymous.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                tv_show.setText("匿名内部类处理事件");            }        });    }}

运行一下程序,布局文件显示效果如下图所示:

点击其中的“匿名内部类方式”按钮,则TextView中的文字发生了改变,表示匿名内部类方式点击事件的成功实现。效果如下图所示:

方法三:接口方式

  1. 首先当前Activity实现OnClickListener接口

    Public class MainActivity extends Activity implements onClickListener();

  2. 然后实现接口方法

    @Override
    public void onClick(View v){
    Log.i(“接口方式”,”button is clicked”);
    }

  3. 最后绑定到Button上

    btn.setOnClickListener(this);

步骤(3)这边需要说明的是,使用方法二匿名内部类方法的时候,括号里创建了一个对象,而这边可以使用this,是因为我们在这个地方的setOnClickListener它需要的是一个对象,这个对象有一个特殊的要求,就是必须要实现onClickListener接口的一个对象,而我们的MainActivity实现了onClickListener接口,所以MainActivity这个对象就是满足要求的,可以放入其中。

Demo:
我们首先创建一个项目ButtonDemo03,并将主活动命名 MainActivity,接着在布局文件中放入一个Button按钮和一个TextView。Button按钮用于点击事件实现,TextView通过内容的变化,用于直观的展示点击效果。实现方式与前两种方法一致,布局文件具体内容如下所示:

<?xml version="1.0" encoding="utf-8"?>        

接下来我们开始具体的实现过程。首先还是在MainActivity中先定义和赋值两个对象变量,方法与之前的方法一、方法二中的完全一致。接下来我们要给Button添加事件监听,于是首先让MainActivity类实现View.OnClickListener,并且通过键盘的alt和enter直接添加接口的onClick方法,在onClick方法中使用setText方法实现文本内容的改变。最后我们在onCreate方法中使用Button的变量调用setOnClickListener(this),这样便完成了Button按钮事件监听的一个处理过程。

/** * 方法三:采用接口方式处理事件 */public class MainActivity extends AppCompatActivity implements View.OnClickListener{ //首先让MainActivity实现接口,然后定义onClick方法    private TextView tv_show;    private Button btn_interface;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_button);        tv_show=(TextView)findViewById(R.id.tv_show);        btn_interface=(Button)findViewById(R.id.btn_interface);        btn_interface.setOnClickListener(this);  //接着添加一个事件监听,然后将MainActivity这个对象自己放入,即this    }    @Override    public void onClick(View v) {        tv_show.setText("接口方式处理事件。");    }}

接着我们运行程序,效果如下图所示:

点击其中的“接口方式”按钮,则TextView中的文字发生了改变,表示接口方式点击事件的成功实现。效果如下图所示:

更多相关文章

  1. "必须搭配使用google play服务才能运行"或“您必须先更新Google
  2. Android多线程系列(一) AsyncTask基本使用以及源码解析
  3. .net开发者对android第二周的学习体会
  4. Android一种实现夜间模式方式,同时解决调用recreate() 时闪屏问题
  5. Android(安卓)自定义侧滑菜单
  6. Android(安卓)XML解析Pull方式———解析网络数据示例
  7. Android(安卓)面试那些事之Java基础
  8. Android监听事件的回调机制
  9. 用android做的一个简单的短信发送器(当然不包括群发)

随机推荐

  1. 【前端】跪求大神:select怎么做表单提示
  2. 【前端】怎么识别pc端的二维码已经被手机
  3. 【前端】JSP页面在IE浏览器下默认“文本
  4. 【前端】渐进增强和优雅降级之间的有什么
  5. 【前端】移动端吸顶后页面滚动,导航也随之
  6. Redis6+PHP:实现根据经纬度计算出附近门
  7. C语言中长度为0的数组详解
  8. if语句 三元 和 函数练习
  9. PHP基础:函数,三元,if
  10. 字符串函数与动态表格