在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进程间通信之内部类作为事件监听器的更多相关文章

  1. Android编程: 界面组成、事件监听器

    学习知识:界面组成.事件监听器 ====界面组成==== 1.用户界面的基本组件叫做View,都是继承android.view.View类,Android里面预定义很多基本的界面组件,比如 Butto ...

  2. Android开发之内部类篇

    内部类: 1.内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性. 2.非静态内部类对象有着指向其外部类对象的引用 等等. 创建项目: 1.File---->New----->ja ...

  3. Android事件监听器Event Listener

    在 Android 中,我们可以通过事件处理使UI与用户互动(UI Events). UI的用户事件处理,即View处理用户的操作,在应用程序中几乎不可避免.View是重要的类,它是与用户互动的前线: ...

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

    原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: ...

  5. Java事件监听器的四种实现方式

    自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...

  6. Java事件处理机制- 事件监听器的四种实现方式

    自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...

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

    原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html Java中四种事件监听器的实现方式分别为: 自身类做为事件监听器 外部类作为事件监听 ...

  8. 关于在Android中添加事件监听器的方法

    一.匿名内部类 1.先找到那个控件(初始化) private Button bt1;  //onCreate方法外 bt1 = (Button)findViewById(R.id.button1); ...

  9. passive 的事件监听器

    很久以前,addEventListener() 的参数约定是这样的: addEventListener(type, listener, useCapture) 后来,最后一个参数,也就是控制监听器是在 ...

随机推荐

  1. MFCEditBox如何自动换行

    设置该EditBox属性: 1.Auto HScroll             False 2.OEM Convert           False 3.Want Return           ...

  2. 20面向对象三特征 之继承 方法重写 super

    继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息.通过extends关键词去指明类与类之间的关系,一个父类可 ...

  3. html页面比较长,如何用js实现网页一打开显示在网页的中部?

    加入js代码 <style type="text/css"> body { height: 2000px; } </style> <script ty ...

  4. js小结(一)

    想要的效果:比如说返回 25%  12.5% 33.33% 有几位小数就显示几位,就用 a=Math.round(a*100)/100 如果想要强制返还两位小数,就使用 a=a.toFixed(2); ...

  5. 零基础入门学习Python(11)--列表:一个打了激素的数组(2)

    前言 上节课我们介绍一个打了激素的数组,叫做列表.列表我们比作一个大仓库,你所能够具现化的东西,都可以往里面扔,它包罗万象.另外还介绍了三个往列表添加元素的方法,分别是: append(),exten ...

  6. 性能测试培训day2

    上节课 性能测试,多线程.协议.场景 实施:1,脚本开发 运行  排错(看回放,然后view-test_results,看业务) 参数化.关联.检查点.事务.思考时间.集合点 参数化:不做参数化的话, ...

  7. 编译Nginx, 并使用自签证书实现https访问

    1. 编译安装nginx1.8.1 [root@centos7 nginx-1.8.1]# ./configure --prefix=/usr/local/nginx.1.8.1 --with-htt ...

  8. Redis Hashes 巧用sort排序

    假设我们有如下的数据结构: 我们想按download排序,并且返回hash中的其他field,需要怎么处理呢? 我们首先会想到sort命令.对,就是这个sort. 我们先看一下sort的语法: 可以看 ...

  9. php使用trait遇到的一个问题

    php是单继承语言,也是就是一个类只能继承一个单独的原始类自PHP5.4.0起,PHP实现了一种代码复用的方法,称为Traittrait 是在一些类(Class)的应该具备的特定的属性或方法,而同父级 ...

  10. C++ string 转整数

    使用 sstream 完成转换, #include <iostream> #include <string> #include <sstream> #include ...