button点击事件应该是android最为基础的东西,因为几乎每个程序都要用到按钮,而按钮按钮,顾名思义就是要被点击嘛。。记得在刚学android的时候看到其他人的代码,发现他们对于点击事件都有自己的喜好的写法,因此本文总结了几种常用的响应方法。
首先真机演示图示为
以下每种方法效果都如图所示
匿名内部类法:
xml代码:
<Button
android:text="Button点击事件测试"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn" />
java代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn= (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"被点击啦",Toast.LENGTH_SHORT).show();
}
});
}
}
自定义监听类:
public class MainActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn= (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn:Toast.makeText(MainActivity.this,"被点击啦",Toast.LENGTH_SHORT).show();
}
}
}
这种写法一般是在有多个button要点击,学过c语言或者java都知道switch的基本用法,在这里就不多说了,相信大家都能看得懂。需要强调的几点是:一定要继承View.OnClickListener
这个接口,我们可以看下这个接口的源码:
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
可以看到里面只有一个抽象方法,根据接口的定义,我们要实现这个方法,否则会报错。
第二点就是我们要声明可点击事件,即btn.setOnClickListener(this);
这行代码,点进去看源码可知这是设置按钮为可点击的,在看完所有点击事件的写法可以发现,设置按钮为可点击的是一个必需步骤,所以在以后写的时候就要注意了。
最后一种写法是本人最喜欢的
首先看下xml代码:
<Button
android:text="Button点击事件测试"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:onClick="touchMe"
/>
可以发现多了android:onClick="touchMe"
这一行代码,也就是直接在xml文件中声明按钮可点击
我们在看下java代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void touchMe(View view){
Toast.makeText(MainActivity.this,"被点击啦",Toast.LENGTH_SHORT).show();
}
}
可以发现之前那段声明代码在MainActivity中不见了,这也对应了上面的xml文件。
如果有同学发现更多的写法,欢迎来联系我