Chinaunix首页 | 论坛 | 博客
  • 博客访问: 398015
  • 博文数量: 93
  • 博客积分: 3006
  • 博客等级: 少校
  • 技术积分: 998
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-02 17:23
文章分类

全部博文(93)

文章存档

2011年(12)

2010年(38)

2009年(20)

2008年(23)

分类: 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
阅读(1274) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~