分类: Java
2011-10-29 17:25:01
那么如何得到界面元素呢?比方一个id为submit的Button定义如下:
1 2 3 4 5 |
那么得到该Button的做法就是findViewById(R.id.submit);
比如:
1 | Button btnsubmit = (Button)findViewById(R.id.submit); |
btnsubmit就是那个id为submit的Button了。
好了,下边开始今天的主题。今天讲的主要是OnClickListener,该类位置:import android.view.View.OnClickListener;
那么如何给刚才那个Button添加click事件呢?代码如下:
1 | btnsubmit.setOnClickListener(callFunc); |
这里的callFunc是一个OnClickListener对象:
1 2 3 4 5 | private OnClickListener callFunc= new OnClickListener() { public void onClick(View v) { //Do something } } |
这是比较罗嗦,或者说是比较婆妈的做法,实际使用中我们可以简写为:
1 2 3 4 5 | findViewById(R.id.submit).setOnClickListener(new OnClickListener() { public void onClick(View v) { //Do something } }) |
不过不推荐直接用findViewById(R.id.submit),不规范呀么不规范~
还有一种则是把全部的click事件给一个clickHandler来处理:
1 2 3 4 5 6 7 8 9 10 11 12 | private OnClickListener clickHandler= new OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.button1: // Do something when click button1 break; case R.id.button2: // Do something when click button2 break; } } } findViewById(R.id.button1).setOnClickListener(clickHandler); findViewById(R.id.button2).setOnClickListener(clickHandler); |
这个白豆腐在Flash中的比较多哈。
查了下资料发现Android SDK 1.6提供了更简洁的方法,在Activity里创建一个public方法(记得设置View参数),然后在 Layout方法里直接设置。
逻辑和设计相比上边的简写和findViewById方法都更简单明了,更具可读性,也方便以后维护。
1 2 3 4 | //Activity文件 public void clickHandler(View v) { // Do something } |
1 2 | //main.xml |