- 浏览: 561732 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (338)
- 已过时文章(留念用) (39)
- Android学习笔记 (30)
- Android开发指引自译 (100)
- Android NDK文档自译 (23)
- Android设计指引自译 (2)
- xp(ペケピー)&linux(理奈、铃)酱~ (4)
- ui酱&歌词自译~ (9)
- lua酱~ (9)
- 自我反省 (1)
- 羽game计划 (1)
- XSL酱 (2)
- java酱 (3)
- 设计的领悟 (58)
- 涂鸦作品(pixiv) (1)
- ruby酱 (2)
- Objective-C编程语言自译 (2)
- Android开发月报 (6)
- objc酱 (2)
- photoshop (3)
- js酱 (6)
- cpp酱 (8)
- antlr酱 (7)
- Lua 5.1参考手册自译 (11)
- 收藏品 (3)
- 待宵草计划 (4)
- 体验版截图 (1)
最新评论
-
naruto60:
太给力了!!!!我这网打不开Intel官网,多亏楼主贴了连接, ...
使用HAXM加速的Android x86模拟器(和一些问题) -
yangyile2011:
谢谢博主,翻译得很好哦
【翻译】(4)片段 -
ggwang:
牙痛的彼岸:痹!
牙痛的彼岸 -
ggwang:
总结得很简练清晰啊,学习了!
ANTLR学习笔记一:概念理解 -
leisurelife1990:
mk sdd
用git下载Android自带app的源代码
我想用PureMVC for Java实现这样一个Android程序:点击按钮,在两个EditText中显示一些内容和点击总次数。
于是,我开始写了(当然这是我最后修改的正常版):
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false"> </EditText> <EditText android:id="@+id/editText2" android:textColor="#FF0000" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false"> </EditText> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>
表面类:
package com.iteye.weimingtom.pmvc.test; import org.puremvc.java.interfaces.IFacade; import org.puremvc.java.patterns.facade.Facade; import android.widget.EditText; public class MyFacade extends Facade implements IFacade { public MyFacade() { this.registerCommand(SetTextCommand.NAME, new SetTextCommand()); this.registerMediator(new TextMediator()); this.registerMediator(new SimpleTextMediator()); this.registerProxy(new MyProxy()); } public void setupReceivers(EditText editText1, EditText editText2) { ((TextMediator) this.retrieveMediator(TextMediator.NAME)).setEditText(editText1); ((SimpleTextMediator) this.retrieveMediator(SimpleTextMediator.NAME)).setEditText(editText2); } }
代理数据(共享数据)类:
package com.iteye.weimingtom.pmvc.test; import org.puremvc.java.interfaces.IProxy; import org.puremvc.java.patterns.proxy.Proxy; public class MyProxy extends Proxy implements IProxy { public static final String NAME = "MyProxy"; public MyProxy() { super(NAME, null); } public int clickNum = 0; public int getClickNum() { return clickNum; } public void setClickNum(int clickNum) { this.clickNum = clickNum; } }
消息类:
package com.iteye.weimingtom.pmvc.test; import org.puremvc.java.interfaces.ICommand; import org.puremvc.java.interfaces.INotification; import org.puremvc.java.patterns.command.SimpleCommand; public class SetTextCommand extends SimpleCommand implements ICommand { public static final String NAME = "SET_TEXT_COMMAND"; @Override public void execute(INotification n) { MyProxy proxy = (MyProxy)this.facade.retrieveProxy(MyProxy.NAME); proxy.setClickNum(proxy.getClickNum() + 1); } }
中介类(有两个):
package com.iteye.weimingtom.pmvc.test; import org.puremvc.java.interfaces.IMediator; import org.puremvc.java.interfaces.INotification; import org.puremvc.java.patterns.mediator.Mediator; import android.widget.EditText; public class TextMediator extends Mediator implements IMediator { public final static String NAME = "TextMediator"; private EditText editText; public TextMediator() { super(NAME, null); } public void setEditText(EditText editText) { this.editText = editText; } @Override public String[] listNotificationInterests() { return new String[]{ SetTextCommand.NAME }; } @Override public void handleNotification(INotification n) { if (SetTextCommand.NAME.equals(n.getName())) { if (this.editText != null) { this.editText.setText( "name:" + n.getName() + "\n" + "body:" + n.getBody() + "\n" + "proxy data: clickNum = " + ((MyProxy)this.facade.retrieveProxy(MyProxy.NAME)).getClickNum()); } } } }
package com.iteye.weimingtom.pmvc.test; import org.puremvc.java.interfaces.IMediator; import org.puremvc.java.interfaces.INotification; import org.puremvc.java.patterns.mediator.Mediator; import android.widget.EditText; public class SimpleTextMediator extends Mediator implements IMediator { public final static String NAME = "SimpleTextMediator"; private EditText editText; public SimpleTextMediator() { super(NAME, null); } public void setEditText(EditText editText) { this.editText = editText; } @Override public String[] listNotificationInterests() { return new String[]{ SetTextCommand.NAME }; } @Override public void handleNotification(INotification n) { if (SetTextCommand.NAME.equals(n.getName())) { if (this.editText != null) { this.editText.setText( "clickNum = " + ((MyProxy)this.facade.retrieveProxy(MyProxy.NAME)).getClickNum()); } } } }
对接到界面后:
package com.iteye.weimingtom.pmvc.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class PureMVCTestActivity extends Activity { private MyFacade facade = new MyFacade(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button1 = (Button) this.findViewById(R.id.button1); EditText editText1 = (EditText) this.findViewById(R.id.editText1); EditText editText2 = (EditText) this.findViewById(R.id.editText2); facade.setupReceivers(editText1, editText2); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { facade.sendNotification(SetTextCommand.NAME, "button1, onClick"); } }); } }
最令我不解的是,如果直接把TextView引用传给registerMediator的TextMediator和SimpleTextMediator对象(作为它们的构造函数的参数),那么响应SetTextCommand的中介类所持有的TextView引用可能不是界面上的TextView引用,因为:
1. 在调试模式下,registerMediator传入的对象引用等于retrieveMediator得到的对象引用。
2. 在直接运行时,registerMediator传入的对象引用不等于retrieveMediator得到的对象引用。
所以,我用这种方式传递EditText引用。
public MyFacade() { this.registerCommand(SetTextCommand.NAME, new SetTextCommand()); this.registerMediator(new TextMediator()); this.registerMediator(new SimpleTextMediator()); this.registerProxy(new MyProxy()); } public void setupReceivers(EditText editText1, EditText editText2) { ((TextMediator) this.retrieveMediator(TextMediator.NAME)).setEditText(editText1); ((SimpleTextMediator) this.retrieveMediator(SimpleTextMediator.NAME)).setEditText(editText2); }
而非在注册时传入:
//这样写可能有问题 public MyFacade(EditText editText1, EditText editText2) { this.registerCommand(SetTextCommand.NAME, new SetTextCommand()); this.registerMediator(new TextMediator(editText1)); this.registerMediator(new SimpleTextMediator(editText2)); this.registerProxy(new MyProxy()); }
发表评论
-
移植js弹幕游戏到libgdx
2012-08-20 10:45 1139原来的游戏是用js实现的: http://www.kikya ... -
突然觉得不能太依赖模拟器加速
2012-08-19 08:02 864以前就怀疑过Android模拟器的加速,不过jkanji接二连 ... -
Markdown语法学习笔记
2012-08-18 20:47 1868一、文本效果: # h1标题 # ,或#h1标题,或h ... -
通过BreakIterator调用Android的icu4c执行中日文的粗略“分词”
2012-08-15 19:17 3307发现Android自带的icu4c可以直接使用,不需要 ... -
再次脱线的Tomoe酱
2012-08-15 09:42 969之前移植了libspark的Tomoe(原版是用AS2 ... -
OpenGL ES与libgdx学习笔记一:二维坐标系方向变换
2012-08-02 13:16 3445二维坐标系变换为原点在左上角(测试用) * GLES ... -
尝试把Danmaku的SurfaceView移植版移植到libgdx
2012-07-11 17:56 1159测试结果是可行的,帧率可以很大,竟然可以在间隔高于60fps ... -
jkanji 3.x开发展望
2012-06-23 06:35 735首先,我最希望能改善一下用户界面。 其次,是我最想说的(如果 ... -
制作STG游戏的初步构思
2012-06-20 18:13 1308计划第二个游戏是做STG题材的游戏,内容未定(我首先想到的是叉 ... -
Android Platform 3.0 SDK和Eclipse ADT安装记录六
2012-06-19 06:32 1219一、弹幕射击游戏相关项目和网址 1. Danm ... -
ReversiWins预览版截图
2012-06-06 09:44 877今天完成ReversiWins预览版的全部工作了。接下来是添加 ... -
SQLite的全文搜索与符号化问题
2012-06-01 08:35 281720130213更正: 下面的'"明 日 *& ... -
用git下载Android自带app的源代码
2012-05-29 11:19 8216(1) 创建工作目录,创建并切换本地的master分 ... -
关于日语简易词典的svn仓库的一点说明
2012-05-24 15:15 932日语简易词典(jkanji)是我写的一个Android平台的小 ... -
脱线的tomoe手写输入
2012-05-24 12:09 951最近想把日语简易词典的手写功能完善一下,发现一些问题: 1. ... -
Android Platform 3.0 SDK和Eclipse ADT安装记录五
2012-05-11 21:32 1329目录: 一、在Aptana 3 ... -
SQLite学习笔记
2012-05-07 21:05 7380SQLite学习笔记 (未完成,待修改) ... -
KAS代码阅读
2012-05-03 17:36 945(未完成,待修改) KAS 0.4.3 [201 ... -
ZipFile.getInputStream()的read方法和AudioTrack中的write方法
2012-04-28 11:06 1777最近发现Java的InputStream是一个很诡异的抽象类, ... -
cocos2d-x for Android安装和学习笔记(请用adt-bundle21.1或以上导入)
2012-04-11 18:10 11804(20121108)注意:这篇文章用cdt编译ndk工程的 ...
相关推荐
Android中怎么使用PureMVC框架
这是一个使用C#开发语言的基于PureMVC框架的Web登录Demo,是网上绝无仅有的实例。 本文以初学者的视角,详细地介绍PureMVC在ASP.NET的应用。 PureMVC不仅仅是Flex的MVC框架哦,而且它非常的小巧,还等什么呢,快来...
bin:对应于Flex / AIR的的项目中使用的swc(在Flex4中安装只用到这个, PureMVC_AS3_2_0_4/PureMVC_AS3_2_0_4.swc 接下来是将puremvc的的库添加到您的Flex的或是空气项目的构建路径中,在FlashBuilder4中的操作步骤...
PureMVC五子棋游戏源码,学习PureMVC
用PureMvc开发Air项目,完整工程实例。 学PureMvc的第一个完整例子
若是想使用,可以直接查看网上的pureMVC 文档,我并未对任何一个函数改名或者更换参数位置。 注意,这个PureMVC中的 class(ClassName, BaseName) 函数并不提供,因为此框架本意就是为了用于cocos2d-x-lua中。
flex PureMVC框架实例 flex PureMVC框架
cocoscreator使用puremvc
按照puremvc官方网站教程做的登陆实例,在flexBuilder3上运行过.绝对好用. 供大家学习参考.
PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章PureMVC教程,是学习PureMVC框架的好文章,PureMVC教程,是学习PureMVC框架的好文章,PureMVC...
pureMVC项目包 导入的包 pureMVC项目包pureMVC项目包
pureMVC框架 pureMVC源码 学习pureMVC的知识
puremvc .net 2.0 /vs2010 使用PUREMVC
puremvc 讲解puremvc的源码
介绍了PureMVC框架结构以及PureMVC下消息发送机制,有助于更好的了解和学习PureMVC架构
这是一个MVC例子,简单的接受了MVC的实现过程。
pureMVC框架dll文件,
PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例PureMVC学习资料与案例
适合Unity的pureMVC,做UI和逻辑分成。比较适合的工具
Pure MVC是在基于模型、视图和控制器MVC模式建立的一个轻量级的应用框架,此资源是PureMVC standard 单线程开发框架.