我有这个代码,它占用了用户在谷歌地图上按下的位置,它采用经度和纬度,我将值放在两个变量中。但它仍然给了我一个NullPointerException
。为什么?
之前我确实尝试过代码并且确实有效。
public boolean onTouchEvent(MotionEvent e, MapView mv) {
int i = e.getAction();
MainActivity test = new MainActivity();
switch(i) {
case MotionEvent.ACTION_UP:
// When your finger stop touching the screen
Log.d("ACTION UP", "Finger was removed from screen");
lng = (int) e.getX();
lat = (int) e.getY();
test.placePinFromTouch(lat, lng); // This is the NullPointerException line
break;
}
我在上面的代码中评论的是我得到NullPointerException
的地方,但我想知道为什么在这个touchEvent中我得到了这个。
答案 0 :(得分:2)
您的test
对象肯定不为空。但是,我们需要知道lng和lat的类型。当然,你正在将你传递给它们的东西作为一个int,但java有一个自动装箱数据的习惯。它们可能是空的。如果它们是int类型,那么它们不是null。但是,如果它们是Integer类型,它们可能是。
最后,我们需要知道placePinFromTouch
是否会显式抛出空指针异常,尤其是lat
和lng
的异常值。是的,这不适合做那件事,但我看到更糟糕的事情是有例外的。