NullPointerException即使我确实在变量中放了一个值?

时间:2011-10-30 21:37:14

标签: android nullpointerexception

我有这个代码,它占用了用户在谷歌地图上按下的位置,它采用经度和纬度,我将值放在两个变量中。但它仍然给了我一个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中我得到了这个。

1 个答案:

答案 0 :(得分:2)

您的test对象肯定不为空。但是,我们需要知道lng和lat的类型。当然,你正在将你传递给它们的东西作为一个int,但java有一个自动装箱数据的习惯。它们可能是空的。如果它们是int类型,那么它们不是null。但是,如果它们是Integer类型,它们可能是。

最后,我们需要知道placePinFromTouch是否会显式抛出空指针异常,尤其是latlng的异常值。是的,这不适合做那件事,但我看到更糟糕的事情是有例外的。