在下面的代码中,我得到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
答案 0 :(得分:0)
似乎在onCreate()之前调用onLocationChanged()。
如果您可以控制这些,请确保先调用onCreate。如果你没有控制权,可以使用if null
以避免异常,并希望在onCreate完成其魔法之后再次调用它。
将行更改为:
if (null != marker2) marker2.setPosition(xmyLL2); // this is line228