Android进程间通信之内部类作为事件监听器

在Android中,使用内部类可以在当前类里面发用改监听器类,因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件。以下是一个调用系统内部类实现短信发送的一个例子:

SMS类:

package com.example.msmlistener;

import android.app.Activity;

import android.app.PendingIntent;

import android.content.Intent;

import android.telephony.SmsManager;

import android.view.View;

import android.view.View.OnLongClickListener;

import android.widget.EditText;

import android.widget.Toast;

public class SMS
implements OnLongClickListener{

private Activity
act;

private EditText
add;

private EditText
content;

public SMS(Activity act, EditText addr, EditText content){

this.act = act;

this.add = addr;

this.content = content;

}

@Override

public boolean onLongClick(View arg0) {

//
TODO Auto-generated method stub

String addressStr = add.getText().toString();

String contentStr = content.getText().toString();

SmsManager sm = SmsManager.getDefault();

PendingIntent sentIntent = PendingIntent.getBroadcast(act, 0,
new Intent(), 0);

sm.sendTextMessage(addressStr,
null, contentStr, sentIntent, null);

Toast.makeText(act,
"短信发送完成!\n", Toast.LENGTH_LONG).show();

return
false;

}

}

Activity  XML:

package com.example.msmlistener;

import android.app.Activity;

import android.app.PendingIntent;

import android.content.Intent;

import android.telephony.SmsManager;

import android.view.View;

import android.view.View.OnLongClickListener;

import android.widget.EditText;

import android.widget.Toast;

public class SMS
implements OnLongClickListener{

private Activity
act;

private EditText
add;

private EditText
content;

public SMS(Activity act, EditText addr, EditText content){

this.act = act;

this.add = addr;

this.content = content;

}

@Override

public boolean onLongClick(View arg0) {

//
TODO Auto-generated method stub

String addressStr = add.getText().toString();

String contentStr = content.getText().toString();

SmsManager sm = SmsManager.getDefault();

PendingIntent sentIntent = PendingIntent.getBroadcast(act, 0,
new Intent(), 0);

sm.sendTextMessage(addressStr,
null, contentStr, sentIntent, null);

Toast.makeText(act,
"短信发送完成!\n", Toast.LENGTH_LONG).show();

return
false;

}

}

Activity JAVA:

package com.example.msmlistener;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.widget.Button;

import android.widget.EditText;

public class MainActivity extends Activity {

EditText address;

EditText content;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//获取页面信息

address = (EditText)findViewById(R.id.address);

content = (EditText)findViewById(R.id.content);

Button btnsend = (Button)findViewById(R.id.send);

btnsend.setOnLongClickListener(new SMS(this, address, content));

}

}

注意需要添加发送短信的权限到Manfest中:

<uses-permission
android:name="android.permission.SEND_SMS"/>

实际上,包含业务逻辑的时间监听器将导致程序的现实逻辑和业务逻辑耦合,从玩儿增加程序后期的维护难度。

如果确实有多个实现监听器需要实现相同的业务逻辑功能,可以考虑使用业务逻辑组件来定义业务逻辑功能,再让事件监听器来调用业务逻辑组件的业务逻辑方法。

Android进程间通信之内部类作为事件监听器

时间: 2024-10-12 21:47:53

Android进程间通信之内部类作为事件监听器的相关文章

Android笔记二十三.Android基于事件监听器处理机制

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.Android的事件处理 Android事件处理包括两个部分:Android事件处理机制(基本)和Android消息传递机制(进阶).前者包含三种处理方式,即基于监听的事件处理.基于回调的事件处理.直接绑定到标签;后者包含两种处理方式,即Handler消息传递.异步任务处理. 1.Android的事件处理机制 (1)基于监听的事件处理方式 通常做法是为Android界面组件绑定特定的事件监听

Android事件监听器Event Listener

在 Android 中,我们可以通过事件处理使UI与用户互动(UI Events). UI的用户事件处理,即View处理用户的操作,在应用程序中几乎不可避免.View是重要的类,它是与用户互动的前线:在Android框架的设计中,以事件监听器(event listener)的方式來处理UI的用户事件. Android框架提供了非常良好的UI事件处理机制.View是绘制UI的类,每个View对象都可以向Android框架注册一个事件监听器.每个事件监听器都包含一个回调函数(callback met

Android 事件与事件监听器

Android系统中常见的事件监听器有如下几种: 1.单击事件(View.OnClickListener):当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的处理方法是onClick(). 2.焦点事件(View.OnFocusChangeListener):组件得到或者失去焦点时产生该事件,事件处理方法是onFocusChange(). 3.按键事件(View.OnKey Listener):用户按下或者释放设备上的某个按键时产生,事件处理方法是 onKey(). 4.触碰事件(Vie

【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式

原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html Java中四种事件监听器的实现方式分别为: 自身类做为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器. 下面分别描述: //--------------------------------------------------------------------- 1. 自身类作为事件监听器: 1 import javax.swing.*; 2 im

[转]Java事件处理机制- 事件监听器的四种实现方式

原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: Java代码   import javax.swing.*; import java.awt.*; import java.awt.event.*; /** *Java事件处理机制:自身类作为事件监听器 *@author Winty([email protected]) *@version 200

android之onclick事件及为adapter设置事件监听器

Android 的onclik事件的实现有三种写法: 1 package com.example.oncliek; 2 3 import android.app.Activity; 4 import android.content.Context; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.view.MenuItem; 8 import android.view.View; 9 import

passive 的事件监听器

很久以前,addEventListener() 的参数约定是这样的: addEventListener(type, listener, useCapture) 后来,最后一个参数,也就是控制监听器是在捕获阶段执行还是在冒泡阶段执行的 useCapture 参数,变成了可选参数(传 true 的情况太少了),成了: addEventListener(type, listener[, useCapture ]) 去年年底,DOM 规范做了修订:addEventListener() 的第三个参数可以是

Android 控件的触摸事件传递与处理

了解Android控件的触摸事件传递与处理对我们日常开发中自定义控件和触摸事件冲突解决有重大意义.Android控件的触摸事件传递和处理主要有以下几个方法,下面一一介绍. 一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev);                                                                                               接收到触摸事件时,是否

java基础之内部类

java内部类,本是非常基础的,在分析一些开源框架源码时候或者看jdk源码的时候,就会发现用到大量的内部类.但是在实际工作中,尤其对于新手来说,根本不知道内部类有什么用处.说白了还是对内部类的基本原理不够清晰,没有掌握好这个基础,所以才不知道内部类有什么用处. 本人也是一边总结基础一边学习一边成长中. 关于内部类: java有四种内部类: ①静态内部类(static inner class) ②成员内部类(member inner class) ③局部内部类(local inner class)