-1

When running my code I get this error ("java.lang.NullPointerException: Attempt to invoke interface method") and I still can't figure why.

Here is my code:

@Override
public void pointerReleased(int x, int y, int x2, int y2) {
    bDrag=false;
    selector.pointerReleased(x, y, x2, y2);
    {
        IDisplayTransformation dt=mapControl.getDisplay().getDisplayTransformation();

        if (canMoveMap)
        {
            if (x>(dt.getDeviceFrame().getXMax()*0.9) || x<(dt.getDeviceFrame().getXMax()*0.1) ||
                    y>(dt.getDeviceFrame().getYMax()*0.9) || y<(dt.getDeviceFrame().getYMax()*0.1))
            {
                Point pt=new Point();
                dt.toMapPoint(x, y, pt);
                IEnvelope env=mapControl.getExtent();
                env.centerAt(pt);
                mapControl.refresh(env);
                return;
            }
        }


        Point pt=new Point(selector.getX(),selector.getY());
        Point result=new Point();
        dt.toMapPoint(pt, result);
        pts.add(result);
        mapControl.repaint();
    }
}

Error message:

10-16 16:53:28.566 4185-4185/ E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke interface method 'void cn.creable.gridgis.display.IDisplayTransformation.toMapPoint(int, int, cn.creable.gridgis.geometry.IPoint)' on a null object reference
10-16 16:53:28.566 4185-4185/ E/MessageQueue-JNI:     at cn.creable.gridgis.controls.PanTool.pointerPressed(Unknown Source)
10-16 16:53:28.566 4185-4185/ E/MessageQueue-JNI:     at cn.creable.gridgis.controls.MapControl.pointerPressed(Unknown Source)
10-16 16:53:28.566 4185-4185/ E/MessageQueue-JNI:     at cn.creable.gridgis.controls.MapView.onTouchEvent(Unknown Source)
Felix Chen
  • 69
  • 7

1 Answers1

0

'dt' is null. You should add a null check for dt around your code so it doesn't crash. I can't tell you why mapControl.getDisplay().getDisplayTransformation(); is returning null.

vguzzi
  • 2,420
  • 2
  • 15
  • 19