1.匿名内部类
//匿名内部类适用于只有唯一操作的按钮 Button btn2 = findViewById(R.id.btn2); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //在控制台输出 Log.e("TAG", "========匿名内部类=========="); } });
2. 内部类监听器设置
//1.获取按钮 Button btn1 = findViewById(R.id.btn1); //点击事件: 被点击时的被触发的事件 MyClickListener mcl = new MyClickListener(); btn1.setOnClickListener(mcl); //2.为按钮注册点击事件监听器 class MyClickListener implements View.OnClickListener { @Override public void onClick(View v) { //在界面上输出一个语句 Log.e("TAG", "刚刚点击的按钮是注册了内部类监听器的按钮"); } }
3.用本类实现activity 这里需要implement View.onClickListener方法
public class ButtonActivity extends AppCompatActivity implements View.OnClickListener{ Button btn3 = findViewById(R.id.btn3); btn3.setOnClickListener(this); @Override public void onClick(View v) { Log.e("TAG", "用本类实现了Activity按钮"); } }
4. 使用xml实现监听事件 这里调用了同一种方法 因此在定义类的时候,使用android:id进行区分
xml文件
<Button android:id="@+id/btn4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="在xml文件中绑定" android:onClick="myClick"/>
<Button android:id="@+id/btn5" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="在xml文件中绑定2" android:onClick="myClick"/>
java文件
//参数: 被点击的控件参数 public void myClick(View v) { switch (v.getId()) { case R.id.btn4: Log.e("TAG", "btn4========"); break; case R.id.btn5: Log.e("TAG", "btn5========"); break; } }