Android Button控件处理点击事件
总共有四种方式
第一种,个人认为最方便的一种,像HTML和JS那样直接注册
<Button
android:id="@ id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="BUTTON"
<!-- 在这里注册了onClick的回调函数 -->
android:onClick="clicked"
/>
然后到Activity实现这个方法
public void clicked(View view) {
// 需要执行的代码
}
第二种,通过在Activity中实现点击事件的接口,然后绑定其中onClick
方法到指定的Button
中
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 根据id访问到指定的Button控件
Button btn = findViewById(R.id.btn);
// 注册点击监听,然后this指针会让它自己找到当前Activity下的onClick方法
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 需要执行的代码
}
}
第三种,不整体实现点击方法,而是在需要的时候直接实现方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.btn);
// 等于一个匿名内部类的形式
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 需要执行的代码
}
});
}
}
第四种, 创建一个内部类,再和Button绑定其实例的对象
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.btn);
MyClickListener cli = new MyClickListener();
btn.setOnClickListener(cli);
}
class MyClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
// 需要执行的代码
}
}
}