android studio 多个控件的单击监听事件方法

对于初学者而言,按钮等的onClick方法似乎有点“麻烦”,每次都手工敲出来会不胜其烦,降低学习的效率和兴趣的。实际上,Android Studio提供了非常人性化的快捷键帮助自动编写onClick方法,跟我来…这里以按钮为例说明如何方便的添加onClick方法,根据情况可以采用两种不同的方法。

1 使用匿名类

如果页面上的按钮不多,比如只有一个时,使用匿名类实现事件对象很方便,代码量也是最小的。其步骤是:

 

  1. 查询并获取按钮对象,这一步没什么稀奇的了:

    Button button = (Button)findViewById(R.id.send_notice);

    1

    Button button = (Button)findViewById(R.id.send_notice);

  2. 接着敲入button.,注意在“.”处稍作停顿,Android Studio即可弹出一个自动补全代码的提示列表,其中第一项往往就是我们需要的代码(Android Studio很智能的),如1所示。

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/0_home_subaochen_git_blog_imgs_android_button-onclick-shot1.png

    图 1: 自动补全代码的提示列表

  3. 选择希望的自动补全代码后,直接按回车键即可,如2所示,可见Android Studio自动添加了setOnClickListener方法,并且提示(参见setOnClickListener方法参数列表上方的气泡)setOnclickListener方法的参数应该是一个OnClickListener对象。

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/1_home_subaochen_git_blog_imgs_android_button-onclick-shot2.png

    图 2: 自动补全部分代码后的样子

  4. 很显然,经过了第3步后,我们已经知道setOnclickListener方法的参数应该是一个OnClickListener对象,可是如何创建这个对象呢?显然要使用new操作符了,因此只要在setOnclickListener方法中输入new␣(注意一定要输入一个空格键),然后按下快捷键,Android Studio有足够的智能知道你在这里要创建什么类型的对象,如3所示。

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/2_home_subaochen_git_blog_imgs_android_button-onclick-shot3.png

    图 3: 自动补全OnClickListener对象

  5. 在第4步中,Android Studio自动猜到了我们要创建的对象类型为View.OnClickListener,因此只要在补全列表中选择第一个(默认已经选中了)按下回车键确认即可,结果如4所示。

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/3_home_subaochen_git_blog_imgs_android_button-onclick-shot4.png

    图 4: 自动补全OnClickListener对象之后

  6. 最后一步!在第5步中可以看到,自动补全的OnClickListener对象下面画着红色的波浪线,表示这段代码有问题。将鼠标移动到红色波浪线标出的代码上,按下快捷键,Android Studio给出了如5所示的提示,选择Implement methods(默认已选中)按下回车键确认,在接下来如6所示的窗口中选择onClick方法(默认已自动选中),即可自动创建所需要的onClick方法,如下所示:

    Button button = (Button)findViewById(R.id.send_notice); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } });

    1

    2

    3

    4

    5

    6

    7

            Button button = (Button)findViewById(R.id.send_notice);

            button.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {

                    

                }

            });

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/4_home_subaochen_git_blog_imgs_android_button-onclick-shot5.png

    图 5: 自动补全onClick方法的补全列表

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/5_home_subaochen_git_blog_imgs_android_button-onclick-shot6.png

    图 6: 自动补全onClick方法的选择窗口

看起来自动生成onClick方法好麻烦啊!但是其实只需要输入为数不多的几个字母,再记住两个快捷键,就非常便捷了。实际上,对于本例,输入的键盘序列为:。多练习几次,就能够很熟练的掌握这个方法的。

如果足够熟练,你会发现另外一个更快的输入方法,键盘序列为:,读者可自行尝试,并思考:为什么要输入字母O?

1

解释:在上面第3步我们已经看到,Android Studio自动提示setOnclickListener方法需要一个OnClickListener对象,因此在这里输入字母O,Android Studio能够智能的判断我们希望创建一个以字母O开头的对象,在这里即View.OnClickListener。

2 实现接口

如果页面中包含多个按钮,使用1中介绍的匿名类方法就显得比较啰嗦,此时可以让当前的Activity类实现OnClickListener接口,在一个onClick方法中处理多个按钮的点击事件。下面介绍快速生成代码框架的方法。

 

  1. 首先获取button对象,假设这里有两个按钮,分别是button1和button2:

    Button button1 = (Button)findViewById(R.id.button1); Button button2 = (Button)findViewById(R.id.button2);

    1

    2

            Button button1 = (Button)findViewById(R.id.button1);

            Button button2 = (Button)findViewById(R.id.button2);

  2. 添加两个按钮的事件响应代码,参考1中的第2步,生成的代码为:

    button1.setOnClickListener(this); button2.setOnClickListener(this);

    1

    2

            button1.setOnClickListener(this);

            button2.setOnClickListener(this);

  3. 注意到,在第2步中,我们将this作为setOnClickListener方法的参数,而我们知道,setOnClickListener的参数应该是一个View.OnClickListener类型的对象,因此就需要在this中实现View.OnClickListener接口的方法,这样this就可以“向上收窄”为一个View.OnClickListener类型的对象。快捷的操作方式是,将光标移动到this上面,按下,如7所示选择MainActivity实现View.OnClickListener接口,然后在接下来的窗口中选择实现onClick方法,如8

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/6_home_subaochen_git_blog_imgs_android_button-onclick-shot7.png

    图 7: 准备自动创建onClick方法

    image: http://softlab.sdut.edu.cn/blog/subaochen/wp-content/uploads/sites/4/2018/09/7_home_subaochen_git_blog_imgs_android_button-onclick-shot8.png

    图 8: 选择onClick方法的窗口

如此操作后你会发现,Android Studio自动声明MainActivity实现了View.OnClickListener接口,并自动给出了一个onClick方法的框架,很方便。在自动生成的onClick方法中再区分不同的按钮就行事件处理就可以了,大致的代码逻辑如下所示:

@Override public void onClick(View v) { switch(v.getId()){ case R.id.button1: // button1 logic break; case R.id.button2: // button2 logic break; default: } }

1

2

3

4

5

6

7

8

9

10

11

12

    @Override

    public void onClick(View v) {

        switch(v.getId()){

            case R.id.button1:

                // button1 logic

                break;

            case R.id.button2:

                // button2 logic

                break;

            default:

        }

    }

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值