• 【转】Android


    原文网址: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。

  • 相关阅读:
    jdk源码调试进去形参没有值
    proxy 简化版本
    spering getBean(),IOC
    彻底清除挖矿程序
    Kworkerd恶意挖矿分析
    怎么让 Android 程序一直后台运行,像 QQ 一样不被杀死
    linux 系统下使用socket进行本地进程间通信
    linux i2c 的通信函数i2c_transfer在什么情况下出现错误
    Java Socket网络编程常见异常(转)
    踩过的坑系列之InputStream.read(byte[])方法
  • 原文地址:https://www.cnblogs.com/wi100sh/p/5585846.html
Copyright © 2020-2023  润新知