Android-Button点击事件
Button点击事件大概可以分为以下几种:
- 匿名内部类
- 实现OnClickListener接口
- 指定Button的onClick的属性(XML)
还有另外的方法就不一 一介绍了
新建一个活动页面
找到res/layout右键new —>Android XML File
创建完成后,从左边的的工具栏拖拽一个button进去:
拖拽过后点击下方的xxxx.xml这里是test.xml进去会有你刚刚拖进去的button配置,你也可以手动在xml添加按钮和其他组件(个人不推荐,容易出错)
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" > 6 <!--新添加的按钮 --> 7 <Button 8 android:id="@+id/button1" 9 android:layout_width="wrap_content" 10 android:layout_height="wrap_content" 11 android:text="Button" /> 12 13 </LinearLayout>
从上图可以看到这就是我们刚刚添加的按钮所配置的xml,其中
android:id 是给button 绑定一个句柄,语法是:@+id/按钮的名字(其他组件同理)
android:layout_width 是指定按钮的宽度
android:layout_height 是指定按钮的高度
android:text 是指定按钮的名字
配置完成后在gen/下R.java自动生成我们刚刚创建的button和layout了
然后在我们Activity加载我们配置layout
在OnCreate调用setContenView:
1 protected void onCreate(Bundle savedInstanceState) {
2 super.onCreate(savedInstanceState);
3 //加载test.layout
4 setContentView(R.layout.test);
5
6 }
上面的R.layout.test就是R.java文件当中的test,从上截图可以找出
匿名内部类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载活动页面
setContentView(R.layout.activity_main);
//对控件进行赋值
btn1 = (Button) this.findViewById(R.id.button1);
//修改button的名字
btn1.setText("点我咯");
//绑定点击事件监听(这里用的是匿名内部类创建监听)
btn1.setOnClickListener(new OnClickListener(){
int i = 0;
public void onClick(View v) {
//点击弹出你消息框
Toast toast = Toast.makeText(getApplicationContext(),"你点击了"+(++i)+"次", Toast.LENGTH_LONG);//提示被点击了
toast.show();
}
});
}
运行结果:
实现OnClickListener的方法:
新建一个ButtonClickListener类
1 package com.example.helloworld; 2 3 import android.content.Context; 4 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Toast; 8 9 public class ButtonClickListener implements OnClickListener{ 10 //实现OnClickListener接口 11 //定义一个上下文变量 12 private Context c; 13 //定义一个构造函数传入上下文 14 public ButtonClickListener (Context c){ 15 this.c=c; 16 } 17 //实现OnClic方法 18 @Override 19 public void onClick(View v) { 20 // TODO Auto-generated method stub 21 Toast.makeText(c, "乃好,安卓1班", Toast.LENGTH_SHORT).show(); 22 } 23 24 25 26 27 28 }
在Activity类中调用:
package com.example.helloworld; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载活动页面 setContentView(R.layout.activity_main); //对控件进行赋值 btn1 = (Button) this.findViewById(R.id.button1); //修改button的名字 btn1.setText("点我咯"); //绑定点击事件监听(调用接口) btn1.setOnClickListener(new ButtonClickListener(this)); } }
运行结果:
XML中指定Button的onClick的属性
在layout的配置文件中找到button1的控件。在里面的添加一个android:onclick属性:
<?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/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:onClick="btnclick" /><!-- 添加一个属性指定点击事件的方法名 --> </LinearLayout>
在Activity实现btnCiick方法
1 package com.example.helloworld; 2 3 import android.app.Activity; 4 import android.app.AlertDialog; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.Button; 11 import android.widget.TextView; 12 import android.widget.Toast; 13 14 15 public class MainActivity extends Activity { 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 //加载活动页面 21 setContentView(R.layout.test); 22 } 23 //实现btnClick方法 24 public void btnClick(View v){ 25 Toast.makeText(this, "乃好,安卓1班", Toast.LENGTH_SHORT).show(); 26 27 }
运行结果同上
写的不是很全面,希望对大家有帮助!!!