Android移动开发 | 实现事件监听的五种方法
- 内部类形式
- 外部类形式
- Activity本身作为监听器类
- 匿名内部类形式
- 绑定标签实现监听
第一种: 内部类形式
1 public class FiveClickListenerActivity extends AppCompatActivity { 2 class MyButtonListener implements View.OnClickListener{ 3 @Override 4 public void onClick(View v){ 5 // 相关的事件处理 6 Toast.makeText(FiveClickListenerActivity.this,"内部类形式实现事件监听功能",Toast.LENGTH_SHORT).show(); 7 } 8 } 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_five_click_listener); 14 Button button =(Button) findViewById(R.id.btn_1); 15 MyButtonListener listener = new MyButtonListener(); 16 button.setOnClickListener(listener); 17 } 18 }
第二种: 内部类形式
1 public class FiveClickListenerActivity extends AppCompatActivity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.activity_five_click_listener); 6 Button button = (Button) findViewById(R.id.btn_1); 7 MyButtonListener listener = new MyButtonListener(); 8 button.setOnClickListener(listener); 9 } 10 }
新建一个外部类MyButtonListener
:
1 public class MyButtonListener implements View.OnClickListener { 2 public void onClick(View v){ 3 //相关事件处理 4 } 5 }
第三种: 匿名内部类
1 public class FiveClickListenerActivity extends AppCompatActivity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 super.onCreate(savedInstanceState); 5 setContentView(R.layout.activity_five_click_listener); 6 Button button = (Button) findViewById(R.id.btn_1); 7 button.setOnClickListener(new View.OnClickListener() { 8 @Override 9 public void onClick(View v) { 10 Toast.makeText(FiveClickListenerActivity.this,"匿名内部类实现事件监听功能",Toast.LENGTH_SHORT).show(); 11 } 12 }); 13 } 14 }
第四种: Activity本身作为事件监听器类
// Activity本身作为事件监听器类 /* 1. 将当前Activity实现OnClicklistener监听接口 重写Onclick方法 2. 通过Acvitity 创建一个监听对象,this就是这个对象 3. 将监听器注册到按钮上 */ public class FiveClickListenerActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_five_click_listener); Button button = (Button) findViewById(R.id.btn_1); button.setOnClickListener(this); } @Override public void onClick(View v) { Toast.makeText(this,"Activity本身作为事件监听器类实现事件监听功能",Toast.LENGTH_SHORT).show(); } }
第五种: 通过绑定标签完成监听
在布局文件(XML
)中添加onClick
属性,属性值作为方法名进行重写完成监听
xml文件:
<?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"> <Button android:id="@+id/btn_label" style="@style/shzyhxjzgstyle" android:onClick="btnClick" android:text="绑定标签完成监听"/> </LinearLayout>
package com.example.ui_moudle; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast; public class HXJZG_Onclick_Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hxjzg__onclick_); } public void btn_btnClick(View v){ Toast.makeText(HXJZG_Onclick_Activity.this,"绑定标签完成监听",Toast.LENGTH_SHORT).show(); } }
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合终身会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步