Android:View点击事件
来源:互联网 发布:玄机科技工资 知乎 编辑:程序博客网 时间:2024/05/21 12:52
<1>创建内部类:
创建一个内部类实现OnClickListener接口并重写onClick()方法,在方法中写入点击事件的逻辑。
内部类写完后需要为按钮设置setOnClickListener(Listener listener)属性,在参数中传入之前创建好内部类对象即可,这样当点击按钮时就会自动触发内部类中的onClick()方法调用事件逻辑。
这里比较重要的一点,要为按钮设置点击事件前要先获取到该控件的引用,需要在布局文件中为按钮设置id属性,在代码中使用findViewById(R.id)方法得到该控件的View对象,最后通过强制类型转换得到该控件,具体代码如下:
为控件设置id属性:
<Button
android:id=”@+id/button1” //为控件设置id属性
…….
/>
得到控件引用,创建内部类实现OnClickListener接口:
protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = (Button) findViewById(R.id.button1); Button button2 = (Button) findViewById(R.id.button2); //传入实现了onClickListener接口的类的对象 button1.setOnClickListener(new MyButton()); button2.setOnClickListener(new MyButton());}private class MyButton implements OnClickListener{ @override public void onClick(View v){ switch(v.getId()){ case R.id.button: log.i("定义属性响应按钮点击事件"); break; case R.id.button1: log.i("定义属性响应按钮点击事件"); break; } }}
使用这种点击事件的好处是,当按钮较多时可以在onClick(View v)方法中使用switch语句case属性设置各自不同的点击事件逻辑。
<2>主类中实现OnClickListener接口:
在主类中实现OnClickListener接口,然后重写onClick()方法,并通过switch语句判断是哪个按钮被点击,然后执行相应操作,具体代码如下:
public class MainActivity extends Activity implements OnClickListener{ protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1 = (Button) findViewById(R.id.button1); Button button2 = (Button) findViewById(R.id.button2); //按钮绑定接口 button1.setOnClickListener(this); button2.setOnClickListener(this); } //在重载的方法中实现点击设置 @override public void onClick(View v){ switch(v.getId()){ case R.id.button: log.i("定义属性响应按钮点击事件"); break; case R.id.button1: log.i("定义属性响应按钮点击事件"); break; } }}
需要注意的是,button.setOnClickListener(this);方法中接收了一个参数this,这个this代表的是该Activity的引用。由于Activity实现了OnClickListener接口,所以在这里this代表了OnClickListener的引用,在方法中传入this就代表该控件绑定了点击事件的接口。
<3>匿名内部类:
当按钮较少或者只有一个按钮时,就不需要再单独创建一个类实现OnClickListener接口了,可以直接创建OnClickListener的匿名内部类传入按钮的setOnClickListener()参数中,具体代码如下:
Button button1=(Button) findViewById(R.id.button1);button1.setOnClickListener(new OnClickListener(){ @override public void onClick(View v){ log.i("定义属性响应按钮点击事假"); }});
- Android view点击事件
- Android:View点击事件
- android点击事件(View)
- android view点击事件无效 OnClickListener
- Android View 点击事件的分发机制
- android...View的点击事件传递详解,
- Android中View点击事件传递(一)
- Android中View点击事件传递(二)
- Android代码练习:View的点击事件
- Android自定义View与添加点击事件
- Android自定义view的点击事件
- Android中父View和子view的点击事件
- Android中父View和子view的点击事件
- Android之View和View点击事件坐标系
- Android中父View和子view的点击事件
- Android View事件分发机制--点击事件的传递规则
- android子view点击事件(click)和父view长点击事件(longclick)冲突
- View的点击事件
- 读者写者模型
- 搜狗浏览器F5,ctrl+F等快捷键不起作用的解决
- 3Dmax 中alt+x半透不起作用
- 安全测试APP是否开启了远程备份功能
- cassandra摘要
- Android:View点击事件
- Log4Net 的Log文件添加行号
- Leetcode Partition List
- php统计数组元素个数
- valgrind报错VEX temporary storage exhausted
- 集合基础 :List;Set;Map
- JavaScript常见基础问题汇总
- 前端开发工具--webpack的使用
- 基本数据结构之树、图