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进程间通信之内部类作为事件监听器的更多相关文章
- Android编程: 界面组成、事件监听器
学习知识:界面组成.事件监听器 ====界面组成==== 1.用户界面的基本组件叫做View,都是继承android.view.View类,Android里面预定义很多基本的界面组件,比如 Butto ...
- Android开发之内部类篇
内部类: 1.内部类的第一个好处,隐藏你不想让别人知道的操作,也即封装性. 2.非静态内部类对象有着指向其外部类对象的引用 等等. 创建项目: 1.File---->New----->ja ...
- Android事件监听器Event Listener
在 Android 中,我们可以通过事件处理使UI与用户互动(UI Events). UI的用户事件处理,即View处理用户的操作,在应用程序中几乎不可避免.View是重要的类,它是与用户互动的前线: ...
- [转]Java事件处理机制- 事件监听器的四种实现方式
原文来自http://stefan321.iteye.com/blog/345221 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: ...
- Java事件监听器的四种实现方式
自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...
- Java事件处理机制- 事件监听器的四种实现方式
自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: import javax.swing.*; import java.awt.*; i ...
- 【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式
原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html Java中四种事件监听器的实现方式分别为: 自身类做为事件监听器 外部类作为事件监听 ...
- 关于在Android中添加事件监听器的方法
一.匿名内部类 1.先找到那个控件(初始化) private Button bt1; //onCreate方法外 bt1 = (Button)findViewById(R.id.button1); ...
- passive 的事件监听器
很久以前,addEventListener() 的参数约定是这样的: addEventListener(type, listener, useCapture) 后来,最后一个参数,也就是控制监听器是在 ...
随机推荐
- CAD参数绘制文字(com接口)
在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawText 绘制一个单行文字.详细说明如下: 参数 说明 DOUBLE dPosX ...
- C# 后台调用存储过程
例一丶返回集合 [WebMethod] public object RegisterMethod(string type, string username, string password, stri ...
- Ubuntu 系统安装(这里用ubuntu 16.04)
一.安装Vmware Workstation 12 选择新建虚拟机- 下一步-安装根据红框部分及说明一步一步进行 点击下一步进行 接下来默认下一步,直到如下图 这里的最大磁盘大小100G.不会直接在本 ...
- python 通过句柄获取窗口内容
-- enoding:utf-8 -- 生成 buffer 对象 import win32con from win32gui import PyMakeBuffer, SendMessage, PyG ...
- Python-基本图形绘制及库引用
turtle库的使用 概述:turtle(海龟)库是turtle绘图体系的python实现 turtle库的理解: -有一只海龟,其实在窗体正中心,在画布上游走 -走过的轨迹形成了绘制的图形 -海龟由 ...
- Rightmost Digit (求n^n最后一位)
Description Given a positive integer N, you should output the most right digit of N^N. Input The ...
- .DS_Store的说明
今天清理电脑时,突然发现好像有文件的地方都会出现一个.DS_Store文件,今天有时间,索性就查了一下,并做总结发表一篇吧,怕有什么影响,并未真正实施,仅仅供自己收藏,仅供大家参考. DS_ ...
- NYOJ-768移位密码,最简单的代替密码;
移位密码 时间限制:1000 ms | 内存限制:65535 KB 难度:0 -> Link <- 还有1个半小时考信息安全导论,昨晚心血来潮在oj上看到这几个题,简直就是水啊 ...
- POJ3669 Meteor Shower
http://poj.org/problem?id=3669 类似于迷宫的一道题 但是并没有 给出迷宫具体什么样 但是题目已说在坐标轴的第一象限 然后障碍就是 流星雨所砸范围 安全位置:永远不会发生危 ...
- 洛谷P1615 西游记公司
题目背景 一道极其无厘头的题目 题目描述 事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了.然后,他们创办了三个公司 ...