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);
}