Android移动开发 | 实现事件监听的五种方法

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文件:

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:id="@+id/btn_label"

style="@style/shzyhxjzgstyle"

android:onClick="btnClick"

android:text="绑定标签完成监听"/>

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();

}

}

相关推荐