从 HereMap 切换到 lwiit 形式
Posted
技术标签:
【中文标题】从 HereMap 切换到 lwiit 形式【英文标题】:Switching from HereMap to lwuit form 【发布时间】:2013-07-24 14:41:14 【问题描述】:我试图在长按地图时显示 lwuit 表单,但出现以下错误
java.lang.NullPointerException
at bw.a(), bci=1
at bw.<init>(), bci=6
at bt.<init>(), bci=10
at by.<init>(), bci=48
at bj.a(), bci=10
at fv.<init>(), bci=54
at ex.<init>(), bci=11
at ed.<init>(), bci=33
at com.org.whatsaround.WhatsAroundMidlet.showLocationView(), bci=17
at gm.commandAction(), bci=80
at b.a(), bci=59
at v.b(), bci=10
at c.d(), bci=6
at ez.gestureAction(), bci=237
at com.nokia.mid.ui.gestures.GestureHandler.handleGestureEvent(), bci=60
at com.sun.midp.lcdui.DisplayEventListener.process(), bci=421
at com.sun.midp.events.EventQueue.run(), bci=182
at java.lang.Thread.run(Thread.java:661)
代码是
public void commandAction(Command c, Displayable d)
if (c == LONG_TOUCH)
GeoCoordinate coord = longTouch.getTouchAt();
WhatsAroundMidlet.getInstance().showLocationView(country, phoneNumber, firstName, lastName, pTitle, pCategory, backListener, profilePic, coord);
【问题讨论】:
【参考方案1】:从你的堆栈跟踪可以看出,你的代码中方法showLocationView()
中抛出了异常,NullPointerException
可能是由于方法调用中的参数之一(country
,phoneNumber
, firstName
、lastName
等)传入一个尚未初始化的对象。
如果coord
有问题,你可以检查如下:
if (c == LONG_TOUCH)
GeoCoordinate coord = longTouch.getTouchAt();
System.out.println(coord);
否则你就只能靠你自己了,因为你还没有解释代码country
、phoneNumber
、firstName
、lastName
等中的方式和位置。实际已填充。
如果堆栈跟踪中的函数名称未被混淆,您可以确定以下内容:
com.org.whatsaround.WhatsAroundMidlet.showLocationView()
- 在这个方法中抛出异常。
gm.commandAction()
- 触发 Command
回调 - 即输入您自己的代码。
ez.gestureAction()
- 在maps-gesture.jar
中处理手势
com.nokia.mid.ui.gestures.GestureHandler.handleGestureEvent()
- 这是由 maps-gesture.jar
创建的手势处理程序,由于长按而被调用。
com.sun.midp.lcdui.DisplayEventListener.process()
- 这是将事件传递给所有注册的侦听器,在您的情况下,这是一个 LONG PRESS 事件。
com.sun.midp.events.EventQueue.run()
- 底层事件循环(可能来自模拟器?)
【讨论】:
你是对的,坐标参数没有初始化。非常感谢以上是关于从 HereMap 切换到 lwiit 形式的主要内容,如果未能解决你的问题,请参考以下文章