【发布时间】:2015-01-13 21:39:39
【问题描述】:
在下面的代码中,我得到了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
}
}
在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
【问题讨论】:
-
什么叫做 onLocationChanged()?先有什么叫做 onCreate() 的东西吗?
-
问题可能是尚未设置 Marker2。代码没有显示它是在哪里定义的,但是 onCreate() 方法实例化了它。必须先调用 onCreate() 方法,然后才能在其他任何地方使用它(除非有其他东西实例化它)。
-
你应该避免在变量名的开头使用大写字母,它们看起来像类。
-
我刚刚更正了复制的代码 - 原始代码一开始没有大写的变量。在 MainActivity() 中设置了 marker2。没有?
-
整个问题现在更清楚了,请参阅下面 cmets 中的提示。如果你不明白,我会在午餐后编辑我的答案。
标签: java android nullpointerexception google-maps-markers