Java Android-NullPointerException
我得到一个NullPointerException,它破坏了这行代码:Java Android-NullPointerException,java,android,nullpointerexception,null-pointer,Java,Android,Nullpointerexception,Null Pointer,我得到一个NullPointerException,它破坏了这行代码: if (options.isVisible()) { 以下是代码块: protected static GoogleMap map; protected static MarkerOptions markerOptions; private OnMarkerCreateListener listener; public LazyMarker(GoogleMap map, MarkerOptions options) {
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变量有关,但我不确定它是否正在中断,因为它没有被初始化?非常感谢您的帮助。是的。运行时告诉您(通过抛出异常),现在您得到了人工确认。可以使用空构造函数初始化MarkerOptions。如果不需要对默认标记进行任何自定义,请传递新的MarkerOptions()
有关文档,请参阅此链接:如果您能告诉我们从何处调用LazyMarker(),以及它在该类中的外观,那就太好了。我建议你在通话中用试一试的方式
try {
...
marker = new LazyMarker(map, options, listener);
...
} catch (NullPointerException e) {
e.printStackTrace();
}
如果这仍然不起作用,请确保检查您是否确实为变量定义了MarkerOptions对象
希望有帮助。正如@Mzn所说,传递一个新的
标记选项()
和
你应该在那里做一个空检查
if (options!=null &&options.isVisible()) {
捕获
NPE
的周围代码不是答案。OP需要找出变量为null
的原因,然后可能他没有为变量定义新的MarkerOptions对象?或者他在某个时候错误地将它设置为null?可能,我不知道构造函数是如何被调用的。但关键是你的答案不是很有效。不是想当混蛋只是想帮忙是的。那是一个非常坏的习惯。大多数时候捕捉RuntimeException
s没有意义。必须通过修改代码来修复编程错误。是的!创建LazyMarker
实例时,您正在传递MarkerOptions
的空引用。如果您正在使用某些代码,首先不要以错误的方式修改它:protectedstatic
有private
非静态的原因。这种变化可能是您的问题的根本原因。无论如何,如果直接使用此类,请在创建LazyMarker
时发送正确的参数。类似于新标记选项().position(新板条(30,30))
。如果您将此类用作Android Maps Extensions的一部分,请向Google Map发送正确的参数。addMarker(MarkerOptions)MarkerOptions
至少需要使用LatLng
位置初始化。这并不能解决问题。它只是推迟了。