在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. asterisk-java ami5 分机状态,挂机原因之类的

    这些东西网上随便一找一大堆,也只是记录下自己找的.方便以后自己复制粘贴用. 最后为啦实现分机状态在web的实时更新,我选择啦使用websocket. //获得分机状态 public static St ...

  2. 使用Gson解析Json数组遇到的泛型类型擦除问题解决方法

    谷歌Gson转换Json串有如下方法: public Object fromJson(String json, Type typeOfT);1可以使用它进行数组解析.如下,使用此方法解析Json串为类 ...

  3. group by 和 聚合函数的使用

    有这样一个表数据: 学生姓名,学生手机号,上课日期,上课科目 科目分: 语文.数学.英语.计算机 要求统计一个这样子的结果: 学生姓名,学生手机号,第一次上课日期,迄今一共上了多少节课,上的最多的科目 ...

  4. OpenMP入门教程(三)

    承接前面两篇,这里直接逐一介绍和使用有关OpenMP的指令和函数 Directives 1.for 作用:for指令指定紧随其后的程序的循环的迭代必须由团队并行执行,只是假设已经建立了并行区域,否则它 ...

  5. apropos - 在 whatis 数据库中查找字符串

    总览 (SYNOPSIS) apropos keyword ... 描述 (DESCRIPTION) apropos 命令在一些特定的包含系统命令的简短描述的数据库文件里查找关键字, 然后把结果送到标 ...

  6. CAD参数绘制椭圆(com接口)

    在CAD设计时,需要绘制椭圆,用户可以设置椭圆的基本属性. 主要用到函数说明: _DMxDrawX::DrawEllipse 绘制椭圆.详细说明如下: 参数 说明 DOUBLE dCenterX 椭圆 ...

  7. Laravel Excel安装及最简单使用

    官网:https://docs.laravel-excel.com/ 1.安装 1.1.安装要求: ​ PHP: ^7.0 ​ Laravel: ^5.5 ​ PhpSpreadsheet: ^1.6 ...

  8. jsencrypt加解密 &&cryptico

    npm install --save jsencrypt import {JSEncrypt} from 'jsencrypt'; //导入公钥if ( publicKey.indexOf('---- ...

  9. 11-3 re模块

    目录 r 的作用 re模块的常用功能 findall search match split sub 将数字替换成'H' subn 将数字替换成'H',返回元组(替换的结果,替换了多少次) compil ...

  10. [Luogu] P1131 [ZJOI2007]时态同步

    题目描述 题目描述 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3…进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何 ...