Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686267
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: Android平台

2014-08-06 00:17:00

button的点击事件可以分为三种情况来实现:


a,利用布局中 Button元素自身的属性  onClick属性来实现的
在Button元素中定义android:onClick=”onBtnClickDemo”  //要在代码中的定义方法名称
在/button_test/res/layout/activity_main.xml
            android:id="@+id/btn_2"
        android:onClick="onclick_btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="50dp"
        android:text="@string/btn_2" />
        />

在/button_test/src/com/example/button_test/MainActivity.java中
@SuppressLint("ShowToast") public class MainActivity extends ActionBarActivity {


Button btn_1,btn_2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);                       
        btn_2 = (Button) findViewById(R.id.btn_2);       
    }
    public void onclick_btn2(View v){
   
    Toast.makeText(MainActivity.this, "我是第二个来的", 0).show();
    }  
}

这个就能够实现button的点击事件参照上述方法名称 在代码中定义方法   public void onBtnClickDemo(View v){}
在方法体当中实现相应的业务逻辑
Toast.makeText(MainActivity.this, 
R.string.btn_one, 
Toast.LENGTH_SHORT).show();


b,利用事件监听机制   事件源  事件监听器  事件
1) 要在布局中的元素中 定义id   android:id=”@+id/xxx”
 2)事件源 :在代码中   定义和布局中元素类型相同的对象  Button btn;   
                 并将该对象 和 布局中的元素进行绑定   findViewById(R.id.xxx);
 3)事件监听器 要定义一个内部类去实现 事件监听器 yyy  implements OnClickListener
                 并覆写抽象方法  和 相应的业务逻辑
将事件源 和  事件监听器进行绑定 btn.setOnXxxxxx(new yyy())

在文件:/button_test/res/layout/activity_main.xml
            android:id="@+id/btn_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="100dp"
        android:layout_marginTop="100dp"
        android:text="@string/btn_1" />

在文件/button_test/src/com/example/button_test/MainActivity.java
public class MainActivity extends ActionBarActivity {
Button btn_1,btn_2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  
        btn_1 = (Button) findViewById(R.id.btn_1);
        btn_1.setOnClickListener(new btn_1());
        //btn_2 = (Button) findViewById(R.id.btn_2);       
    }
//    public void onclick_btn2(View v){
//    
//     Toast.makeText(MainActivity.this, "我是第二个来的", 0).show();
//    }  

public  class btn_1 implements  OnClickListener {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "我是第一个来的", 0).show();
}
}

c、利用匿名内部类的方式实现 ===》就是对第二种方式的简写
   1) 要在布局中的元素中 定义id   android:id=”@+id/xxx”
   2) 在代码中 定义和布局中元素类型相同的对象  Button btn;
        并将该对象 和 布局中的元素进行绑定   findViewById(R.id.xxx)
   3) 给btn对象绑定事件监听器  
btn.setOnClickListenter( new OnClickListenter() { 
                      public void onClick(View v){
                          实现业务逻辑 
                        }
                 }
)

在文件/test/res/layout/main.xml
            android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_one" />


在文件/test/src/com/baidu/activity/MyActivity.java
public class MyActivity extends Activity {
//private static final OnClickListener OnClickListener = null;
Button btn_start;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

// btn_start = (Button) findViewById(R.id.start);
// btn_start.setOnClickListener(new btn_start());

btn_stop = (Button) findViewById(R.id.stop);
btn_stop.setOnClickListener(new OnClickListener(){


@Override
public void onClick(View v) {
// TODO Auto-generated method stub

//Toast.makeText(MyActivity.this, "我是第二个来的", 0).show();
Toast.makeText(MyActivity.this,getResources().getString(R.string.btn_two), 0).show();
}});
}
}

d、利用的是让Activity的子类去直接实现 事件监听器  并覆写方法
   1) 要在布局中的元素中 定义id   android:id=”@+id/xxx”
   2) 在代码中 定义和布局中元素类型相同的对象  Button btn;
        并将该对象 和 布局中的元素进行绑定   findViewById(R.id.xxx)
   3) 给定义的btn对象绑定事件监听器 btn.setOnClickListenter(this);
   4) 在覆写的onClick中实现业务逻辑   v.getId()    R.id.xxx








阅读(785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~