Android NullPointerException,即使我在变量中输入了值?

Android NullPointerException,即使我在变量中输入了值?,android,nullpointerexception,Android,Nullpointerexception,我有这段代码,它获取用户在谷歌地图上按下的位置,它获取经度和纬度,我把值放在两个变量中。但它仍然给了我一个NullPointerException。为什么? 我以前也试过这个代码,它确实有效 public boolean onTouchEvent(MotionEvent e, MapView mv) { int i = e.getAction(); MainActivity test = new MainActivity(); switch(i) {

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

您的测试对象肯定不是null。然而,我们需要知道lng和lat的类型。当然,您正在将传递给它们的内容转换为int,但java有自动装箱数据的习惯。它们可能是空的。如果它们是int类型,则它们不为null。但是,如果它们是Integer类型,则可能是


最后,我们需要知道placePinFromTouch是否会显式抛出空指针异常,特别是在lat和lng的异常值上。是的,这样做不合适,但我看到过一些更糟糕的事情,但也有例外。

你确定测试不是空的吗?你的测试对象很可能没有初始化好我有一个定义所有变量的地方:MainActivity test;我必须像MainActivity test=newmainActivity那样做吗?@公司:是的,你必须初始化它。我不知道这样做是否正确。-1缺乏调试。使用调试器或println可以很容易地看到测试中的内容。包括一个堆栈跟踪将使我们和你!查看它是来自测试为null还是来自placePinFromTouch方法。