方式1:建立成员内部类java
//1:建立内部类 class ButtonListener implements OnCickListener{ //重写OnClick方法 @Override public void onClick(View v){ // 该方法将在绑定的按钮被点击时调用,v对象为绑定的控件 // 吐司使用方法:1,当前界面对象(上下文环境),2,显示内容,三、吐司显示时长 Toast.makeText(MainActivity.this, "按钮被点击啦!!", Toast.LENGTH_SHORT).show(); } } /* * 为按钮添加监听器 第一步:XML布局文件中添加<Button />控件并为其设置id * 第二步:在java代码中(须要显示该控件的Activity中), 经过setContentView,装载Button所在的XML布局。 * 第三步:经过Button的id在Activity中获取到Button的对象 * 第四步:为button按钮添加监听事件 * a:建立内部类并实现OnClickListener接口 * b:重写onClick方法(当按钮被点击后想干什么) * c:生成内部类对象 * d:为按钮添加监听器 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 第二步 setContentView(R.layout.activity_linearlayout); // 第三步 button01 = (Button) findViewById(R.id.btn01); //生成监听器(内部类)类的对象 MyButtonListener myButtonListener=new MyButtonListener(); //第四步 为按钮添加监听器 button01.setOnClickListener(myButtonListener); }
方式2:建立匿名内部类android
/* * 第一步:获取Button对象 * 第二步:直接调用button的setOnClickListener方法 * a,在方法中,传入new OnClickListener(){ * onClick(){ * } * } * 匿名内部类以及内部类形式,这两种方式在开发中最经常使用。 */ private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); btn = (Button) findViewById(R.id.btn01); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 当按钮点击时调用 Toast.makeText(SecondActivity.this, "按钮已被点击(匿名内部类)", Toast.LENGTH_LONG).show(); } }); }
方式3:Activity直接实现监听接口ide
public class ThirdActivity extends Activity implements OnClickListener { /* * 第一步:获取到Button按钮对象 * 第二步 : 直接使Activity实现OnClickListener接口 * 第三步:重写onClick方法 * 第四步:为按钮添加监听器(传入this) */ private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); btn = (Button) findViewById(R.id.btn01); btn.setOnClickListener(this); } @Override public void onClick(View v) { // 当按钮被点击时调用 Toast.makeText(ThirdActivity.this, "按钮已被点击(Activity直接实现接口)", Toast.LENGTH_LONG).show(); } }
方式4:经过XML布局文件定义onClick属性布局
/* * 第一步:xml布局文件中,为button添加onclick属性 * 第二步:在对应的Activity中,建立一个以onclick属性值为名字的方法 * a:修饰符为public * b:返回值为void * c:传入参数为View类型 */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); } public void MyButtonClick(View v) { // 将在btn01按钮被点击时调用 Toast.makeText(FourthActivity.this, "按钮已被点击(xml布局文件中定义)", Toast.LENGTH_LONG) .show(); } activity_linearlayout.xml文件: <Button android:id="@+id/btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:onClick="MyButtonClick" android:text="按钮1" android:textColor="@color/cyan" android:layout_marginBottom="5dp"/>
附加:多按钮使用用一个监听器this
public class SixthActivity extends Activity { // 经过建立内部类为多个按钮添加监听器 /* * 建立内部类实现OnClickListener接口 * onClick方法中,经过switch(R.id.xxx)方式区别当前被点击的按钮是哪一个 * 以后再对相应的按钮作不一样的处理 */ private Button btn01, btn02; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_linearlayout); btn01 = (Button) findViewById(R.id.btn01); btn02 = (Button) findViewById(R.id.btn02); ButtonsListener btnButtonsListener = new ButtonsListener(); btn01.setOnClickListener(btnButtonsListener); btn02.setOnClickListener(btnButtonsListener); } class ButtonsListener implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn01: Toast.makeText(SixthActivity.this, "已点击第一个按钮", Toast.LENGTH_LONG).show(); break; case R.id.btn02: Toast.makeText(SixthActivity.this, "已点击第二个按钮", Toast.LENGTH_LONG).show(); break; } } } } activity_linearlayout.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/btn01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:onClick="MyButtonClick" android:text="按钮1" android:textColor="@color/cyan" android:layout_marginBottom="5dp"/> <Button android:id="@+id/btn02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/blue" android:text="按钮2" android:textColor="@color/cyan" /> </LinearLayout>