0

我得到一个 NullPointerException 正在破坏这一行的代码:

if (options.isVisible()) {

这是代码块:

protected static GoogleMap map;
protected static MarkerOptions markerOptions;
private OnMarkerCreateListener listener;

public LazyMarker(GoogleMap map, MarkerOptions options) {
    this(map, options, null);
}

public LazyMarker(GoogleMap map, MarkerOptions options, OnMarkerCreateListener listener) {
    if (options.isVisible()) {
        createMarker(map, options, listener);
    } else {
        this.map = map;
        this.markerOptions = copy(options);
        this.listener = listener;
    }
}

我猜它与 MarkerOptions 变量有关,但我不确定它是否因为没有被初始化而中断?任何帮助将不胜感激。

4

3 回答 3

1

正如@Mzn 所说,通过一个新的MarkerOptions()

你应该在那里做一个空检查

if (options!=null &&options.isVisible()) {
于 2013-05-07T21:04:43.453 回答
0

如果您能告诉我们您从哪里调用 LazyMarker() 以及它在该类中的外观,那就太好了。我建议你用 try-catch 包围通话。

try {
    ...
    marker = new LazyMarker(map, options, listener);
    ...
} catch (NullPointerException e) {
    e.printStackTrace();
}

如果这仍然不起作用,请务必检查您是否确实为变量定义了 MarkerOptions 对象。

希望能帮助到你。

于 2013-05-07T20:57:53.540 回答
0

是的。运行时告诉你(通过抛出异常),现在你得到了人工确认。您可以使用空构造函数初始化 MarkerOptions。如果您不需要对默认标记进行任何自定义,请传递一个新的 MarkerOptions()。

有关文档,请参阅此链接:https ://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/MarkerOptions

于 2013-05-07T20:57:19.750 回答