2013-05-07 4 views
0
나는이 줄에 코드를 파괴하는 NullPointerException이지고있어

:안드로이드 - NullPointerException이

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; 
    } 
} 

내가 추측하고있어이 관련이있다 : 여기

if (options.isVisible()) { 

코드의 블록 MarkerOptions 변수와 함께 있지만 초기화되지 않기 때문에 깨는 지 확실하지 않습니다? 어떤 도움이라도 대단히 감사하겠습니다.

+1

예를 널 체크를해야 새로운 MarkerOptions()

에 합격했다! 'LazyMarker' 인스턴스를 생성 할 때'MarkerOptions'의 널 참조를 전달하고 있습니다. – yugidroid

+0

일부 코드를 사용하는 경우 우선 나쁜 방법으로 수정하지 마십시오. '정체 된 정적'좋은 이유로 인해 '비공개'정적이있었습니다. 이 변경은 아마도 문제의 근본 원인 일 수 있습니다. 어쨌든이 클래스를 직접 사용한다면'LazyMarker'를 만들 때 올바른 인수를 보내십시오. '새로운 MarkerOptions(). position (new LatLng (30, 30)) '과 같은 것입니다. 이 클래스를 Android Maps Extensions의 일부로 사용하는 경우 올바른 arguemtnt를 'GoogleMap.addMarker (MarkerOptions)'에 보냅니다. –

답변

0

예. 런타임은 (예외를 던짐으로써) 당신에게 말했고, 이제 당신은 인간의 확인을 얻었습니다. 빈 생성자로 MarkerOptions를 초기화 할 수 있습니다. 기본 마커를 사용자 정의 할 필요가 없다면 새로운 MarkerOptions()를 전달하십시오. 당신이하고 그 클래스 내부의 모습에서 LazyMarker()를 호출하는 곳에 당신이 우리를 말할 수있는 경우 https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/model/MarkerOptions

+0

'MarkerOptions'는 적어도 LatLng 위치로 초기화되어야합니다. –

0

것은, 그것은 좋은 것 :

는 문서에 대한 링크를 참조하십시오. 나는 당신이 try-catch로 전화를 둘러싸도록 제안 할 것이다.

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

여전히 작동하지 않는다면 실제로 변수에 MarkerOptions 객체를 정의하고 있는지 확인하십시오.

희망이 있습니다. @Mzn으로

+3

'NPE'를 잡는 주변 코드는 대답이 아닙니다. OP가 왜 변수가 null인지 알 필요가 있습니다 – codeMagic

+0

그런 다음 변수에 새 MarkerOptions 객체를 정의하지 않았습니까? 아니면 실수로 어떤 점에서 null로 설정했을까요? –

+0

아마도 생성자가 호출되는 방법을 모른 채 모르겠다. 그러나 요점은 당신의 대답이 그다지 효과적이지 않다는 것입니다. 바보가 되려고하지 않고 .. 도우려는 것. – codeMagic

1

당신이

if (options!=null &&options.isVisible()) { 
+0

그래도 문제가 해결되지 않습니다. 그것은 단지 그것을 연기합니다. –