Marker.setPosition()处的NullPointerException

时间:2014-11-17 03:01:45

标签: java android nullpointerexception google-maps-markers

在下面的代码中,我得到NullPointerException。我理解这意味着我在228行使用的东西之一是null而不是有效地址。但我不明白为什么。我有什么遗漏的吗?

public class MainActivity extends ActionBarActivity {

    LatLng xmyLL2;
    private Marker marker2;

    protected void onCreate(Bundle savedInstanceState) {
        marker2 = googleMap.addMarker(new MarkerOptions().
                position(xmyLL2).title("ver2"));
    }

    private class MyLocationListener implements LocationListener {
        public void onLocationChanged(Location location) {
            double xd2 = Double.parseDouble(xstr[2]);
            double xd3 = Double.parseDouble(xstr[3]);
            xmyLL2 = new LatLng( xd2, xd3 );
            marker2.setPosition(xmyLL2);  // this is line228
    }
}

On line 228: marker2.setPosition(xmyLL2);我得到异常,这就是堆栈跟踪:

MainActivity$MyLocationListener.onLocationChanged(Location) line: 228
LocationManager$ListenerTransport._handleMessage(Message) line: 279
LocationManager$ListenerTransport.access$000(LocationManager$ListenerTransport, Message) line: 208

1 个答案:

答案 0 :(得分:0)

似乎在onCreate()之前调用onLocationChanged()。

如果您可以控制这些,请确保先调用onCreate。如果你没有控制权,可以使用if null以避免异常,并希望在onCreate完成其魔法之后再次调用它。

将行更改为:

if (null != marker2) marker2.setPosition(xmyLL2);  // this is line228