`
hzxdark
  • 浏览: 77117 次
社区版块
存档分类
最新评论

J2ME的MVC2开源框架KBOX系列之二——参数传递与Action跳转

阅读更多
KBOX的1.02正式版已经发布了,下载地址:
https://sourceforge.net/project/showfiles.php?group_id=222328
KBOX网站:http://kbox-mvc.sourceforge.net/news.html

关于KBOX的使用,见上一篇文章《 使用J2ME的MVC2开源框架KBOX

MIDP2.0默认的Command参数无法传递参数给事件处理器,这在开发中是很不方便的。
KBOX的KCommand扩展了Command使其可以携带一个Hashtable参数(也就是想“塞”多少参数都可以^_^)

参数传递:

...

Hashtable parameters = new Hashtable();

parameters .put("parameter","hello world!");

KCommand kc = new KCommand("TEST BUTTON", Command.HELP,1,"MYCMD",parameters );

...




这个主要是用于键盘按钮事件这类无法主动添加Command的键盘事件(当然你可以给一个Command事件加一个配置文件参数,虽然个人觉得没什么必要——从KCommand的Hashtable参数传递已经完全足够了)

配置文件(kbox.cfg.property:

...

CMD.MYCMD.ACTION=action.TestAction

CMD.MYCMD.PARAMETERS.1=HELLO         //传递名为1、2的参数给Action类MYCMD

CMD.MYCMD.PARAMETERS.2=WORLD

...



Action:

...

public void excute(KCommand cmd, Item item,  Displayable dis, ActionForward forward,Hashtable parameters) {

...

System.out.println(parameters.get("1"));//HELLO

System.out.println(parameters.get("2"));//HELLO

...

}

...

注意,当前版本的配置文件参数名字只能是1、2、3照着顺序取名字,否则KBOX认不到……


Action 跳转:

有时可能需要从一个Action跳转到另外一个Action,但KBOX的ActionForward并不支持跳转Action,一个变通的解决办法是, 注意到Action只是一个普通的类,直接生成另外一个Action的实例,excute传递参数即可:)

public void execute(KCommand cmd, Item item,  Displayable dis, ActionForward forward,Hashtable parameters) {

...

new AnotherAction().execute(cmd,item,dis,forward,parameters);

}

3
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics