操作环境
Project:ButtonTest
IDE:Android Studio2.1
学习了几个月的Android,觉得有必要复习一下前面学过的知识,哪怕再简单的知识也是可以温故而知新的。就从最简单的按钮点击事件开始吧。我总结了五种不同的写法,如下:
- 匿名内部类
- 使用View.onClickListener
- 使用onClick属性
- 自定义单击事件监听类
- 使用外部类。
我在布局上按照不同的写法放置了五个按钮,点击不同的按钮,就会把按钮上的文字传递到顶部的TextView。下面是整体的UI界面:
这是我完成整个博客之后的界面,由于我是边写边运行边截图的,在下面你会看到按钮是一个一个加上去的。
1. 匿名内部类
这个写法用得非常多,只要调用setOnClickListener(),在里面传入匿名内部类就可以了使用接口中的onCLick方法了。
public class ButtonActivity extends AppCompatActivity {
private Button button1;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
textView = (TextView) findViewById(R.id.textView);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("匿名内部类");
}
});
}
}
完成效果:
2. 使用View.onClickListener 接口
我个人很喜欢这种写法,只要让Activity继承View.OnClickListener接口,然后让Button对象去调用setOnClickListener()方法,并在其中传入this就可以了。在点击事件特别多的时候,这种写法的优势就出来了:在OnClick方法中使用switch语句,就可以在不同控件的的点击事件中来回切换,非常的简洁和便利。
public class ButtonActivity extends AppCompatActivity implements View.OnClickListener{
private Button button1,button2;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
//初始化控件
textView = (TextView) findViewById(R.id.textView);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
//1.匿名内部类
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("匿名内部类");
}
});
//2.使用View.onClickListener接口
button2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
textView.setText("使用View.onClickListener