第一种:使用匿名内部类实现
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1= findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "你点击了button1", Toast.LENGTH_SHORT).show();
}
});
}
第二种:使用内部类实现
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new MyOnClickListener());
}
class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "你点击了button2", Toast.LENGTH_SHORT).show();
}
}
}
第三种:使用接口实现
1.让MainActivity直接实现View.OnClickListener
2.在MainActivity类中重写onClick方法
3.给Button绑定一个监听器,并监听一个点击事件
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button3= findViewById(R.id.button3);
//注:此处为this
button3.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(this, "你点击了button3", Toast.LENGTH_SHORT).show();
}
}
第四种:布局文件中添加
//利用反射给button绑定一个监听器,监听点击事件
/**
* 1:方法的访问修饰符必须是public
* 2:方法的名称必须跟android:onClick="onClick" 中的名称完全一致
* 3:形参必须是View类型
* 注:形参View其实就是Button对象本身
* */
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button4=findViewById(R.id.button4);
}
public void onClick(View view){
Toast.makeText(this, "你点击了button4", Toast.LENGTH_SHORT).show();
}
}
这里附上一张button2的运行效果