在长时间点击地图时我试图显示一个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);
}
}
}
答案 0 :(得分:0)
从堆栈跟踪中可以看出,方法showLocationView()
中的代码中引发了异常,NullPointerException
可能是由方法调用中的一个参数引起的({{1} },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()
- 基础事件循环(也许来自模拟器?)