按钮的四种实现方式
- 第一种 setOnClickListener
- 第二种 自定义一个类,实现View.OnClickListener接口
- 第三种 在布局文件中设置onClick属性
- 第四种 类本身实现View.OnClickLinstener接口
Android中都是靠点击实现和用户交互的。所以点击的实现方式一定要全部搞懂。
先把布局和代码贴出来,超级简单的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn"
android:text="按钮"
android:onClick="btnClick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.btn);
//第一种方式
// btn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// //TODO 这里写你点击按钮时需要执行的代码
// }
// });
//第二种方式
btn.setOnClickListener(new MyButtonOnClickLintener());
}
//第二种方式
class MyButtonOnClickLintener implements View.OnClickListener{
@Override
public void onClick(View view) {
//TODO 这里写你点击按钮时需要执行的代码
}
}
}
第一种 setOnClickListener
第一种,最简单,最好理解,按钮调用setOnClickListener方法,参数传递一个匿名对象,实现接口的方法,在方法里面写你想要执行的代码。
//第一种方式
// btn.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// //TODO 这里写你点击按钮时需要执行的代码
// }
// });
第二种 自定义一个类,实现View.OnClickListener接口
和第一种差不多,就是在你自定义的类中可以增加一些其他逻辑。
//第二种方式,这种方式传递的参数,就是自定义创建的类。具体实现业务就在这个类中写
btn.setOnClickListener(new MyButtonOnClickLintener());
//第二种方式
class MyButtonOnClickLintener implements View.OnClickListener{
@Override
public void onClick(View view) {
//TODO 这里写你点击按钮时需要执行的代码
}
}
第三种 在布局文件中设置onClick属性
在布局文件中给button设置onClick属性,写点击事件方法名,然后在activity中创建一个方法,和设置的方法名相同就行了。参数一定要是View
public void btnClick(View view) {
//TODO 这里写你点击按钮时需要执行的代码
}
第四种 类本身实现View.OnClickLinstener接口
让你的Activity实现View.OnClickLinstener接口,然后重写onClick方法,如果只有一个按钮,就直接写你的代码就行了,如果是多个,一般都是结合switch使用,方便统一管理所有的点击事件。
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn:
//TODO 这里写你点击按钮时需要执行的代码
break;
}
}
下面在贴一遍完整代码,四种点击方式都写在里面。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = findViewById(R.id.btn);
//第一种方式,给按钮设置setOnClickListener
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//TODO 这里写你点击按钮时需要执行的代码
}
});
//第二种方式,结合自定义的类,实现点击事件
btn.setOnClickListener(new MyButtonOnClickLintener());
}
/**
* 第三种方式,在布局文件里设置onClick属性,写好方法名,在这里写相同方法名的方法
* @param view
*/
public void btnClick(View view) {
//TODO 这里写你点击按钮时需要执行的代码
}
/**
* 第四种方式,实现View.OnClickListener接口,重写onClick方法
* @param view
*/
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn:
//TODO 这里写你点击按钮时需要执行的代码
break;
}
}
/**
* 第二种方式,自定义一个类,实现View.OnClickListener接口,重写onClick方法
*/
class MyButtonOnClickLintener implements View.OnClickListener{
@Override
public void onClick(View view) {
//TODO 这里写你点击按钮时需要执行的代码
}
}
}