2017-11-25 14 views
1

클릭하면 현재 위치에 마커를 설정하는 코드를 작성했습니다. 불행히도 현재 위치가 지정되지 않고 버튼이 클릭되면 전체 애플리케이션이 중단됩니다. 오류 상태 : java.lang.NullPointerException : null 개체 참조에 대한 가상 메서드 'double java.lang.Double.doubleValue()'호출 시도버튼 논리 내에서 캐치 시도

단추 내에 try catch 예외를 구현하는 방법이 있습니까?

markerBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude); 
      marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker")); 
      markerBtn.setTag("yo"); 

     } 
    }); 
+0

확실한 방법이 있습니다. 시도해 봤어? 그것을 구현하는 * 정확히 * 당신은 붙어 있습니까? https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html – codeMagic

+0

myLocation은 아마도 null 일 수 있습니다. (myLocation! = null) { }와 같이 코드에 null에 대한 검사를 입력해야합니다. –

답변

1

이미 두 가지 대답이 있습니다. 그러나 나는 이것을 할 올바른 방법을 알려 드리고자합니다. 그가 아직 위치를 선택하지 않은 경우 적절한 메시지가있는 코드가 return입니다.

보너스 제안 : 이것들은 try catch block을 사용하지 마십시오. 그들은 예기치 않은 오류에 사용됩니다. 존재하지 않는 소켓을 연결하는 중입니다.

markerBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       // check if user has not set location yet. 

       if (myCurrentLatitude == null | myCurrentLongitude == null){ 
        Toast.makeText(EventViewActivity.this, "Please choose your location first", Toast.LENGTH_SHORT).show(); 
        return; 
       } 
       LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude); 
       marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker")); 
       markerBtn.setTag("yo"); 

      }); 
1
markerBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 

     try{ 
      LatLng myCurrentLocation = new LatLng(myCurrentLatitude, myCurrentLongitude); 
      marker = mMap.addMarker(new MarkerOptions().position(myLocation).title("New Marker")); 
      markerBtn.setTag("yo"); 
     }catch(Exception e){ 
      System.out.println("No current location set"); 
     } 
}); 
1

는 위도/LNG 값에 액세스하기 전에이 시도 :

다음은 버튼의 클릭에 지시한다.