• button的按键事件


    原来的网址:http://www.yrom.net/blog/2011/12/12/android-4-onclicklistener-of-button/

    Button控件setOnclickListener(View.OnClickListener listener)来接收一个点击事件的监听器

    • 自定义一个点击事件监听器类
      让其实现View.OnClickListener的onClick(View v)方法
    1
    2
    3
    4
    5
    
    class MyOnClickListener implements View.OnclickListener{
         public void onClick(View v){
         ...
         }
    }
    

    然后注册到按钮上

    1
    
    btn.setOnclickListener(new MyOnClickListener ());
    
    • 采用匿名内部类的形式
      当监听器只适用一个按钮时,可以将上面一个方法简化:
    1
    2
    3
    4
    5
    
    btn.setOnclickListener(new View.OnClickListener (){
         public void onClick(View v){
         ...
         }
    });
    
    • 将当前Activity去实现View.OnClickListener
      在Activity中实现其onClick()方法。这样可以使多个按钮复用一个监听器。
      注册监听时,只需将当前对象(this)给按钮即可:
    1
    
    btn.setOnclickListener(this);
    

    Tips:用switch-case针对各个Button的id来做相应的响应: eg.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    public void onClick(View v){
         switch(v.getId()){
         case R.id.btn_login:
         login();
         break;
         case R.id.btn_regist:
         regist();
         break;
         default:
         doSomething();
         break;
         }
    }
    
    • 在布局文件中显式指定按钮的onClick属性
      对应Activity的布局文件加入形如:
    1
    2
    3
    4
    5
    
    <Button
      android:onClick="click"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/btn_text" />
    

    这样按钮点击时会利用反射的方式调用对应Activity中的click()方法:

    1
    2
    3
    
    public void click(View v){
    ...
    }
    

    一个Button只能有一个onClick属性值,一个click()方法可以赋给多个Button。 在click()方法中可以针对Button的Id来做响应,参见上面的Tips。

  • 相关阅读:
    javascript设计模式(一)职责链模式China of responsibility
    javascript设计模式(一)策略模式Strategy
    angularjs提示消息弹出框
    Javascript设计模式(一)States
    Javascript设计模式(一)Facade
    NOIP2020
    RMQ & ST表
    NOI Linux
    初赛解析
    贪心大解析
  • 原文地址:https://www.cnblogs.com/changzheng/p/3997904.html
Copyright © 2020-2023  润新知