1

Я получаю NullPointerException при попытке загрузить карту Google на наше приложение, как below.also Класс Java простирается от AppCompatActivty и внутри intialiseMap() мы пытаемся getMap()Исключение нулевого указателя на addmarker и MarkerOptions на GoogleMap

И здесь где мы получаем исключение, внутри метода placeMarker

public void placeMarker(LatLongDetails user_latlongobj2, 
         final Context contextPlace) { 
    try { 
     if (googlemap == null) { 
      intialiseMap(); 
      animatecamera(user_latlongobj); 
     } 
     if (LoginDetails.Address.length() < 1) { 
      LoginDetails.Address = "Getting your location ....."; 
     } 
     //googlemap.clear(); 
     marker = new MarkerOptions().position(
       new LatLng(user_latlongobj2.user_latitude, 
         user_latlongobj2.user_longitude)).title(
       LoginDetails.Address); 

     System.out.println("This is the Address" + LoginDetails.Address); 

     marker.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)); 

     if (googlemap != null) { 

      googlemap.addMarker(marker).showInfoWindow(); 
     }else { 
      intialiseMap(); 
      googlemap.addMarker(marker).showInfoWindow(); 
     } 
     System.out.println("PLACING MARKER" + LoginDetails.Address); 
     if (marker == null || contextPlace == null) { 
      Intent in =new Intent(this,ProfileActivity1.class); 
      in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(in); 
     } 
     else 
      fixmarker(marker, contextPlace); 

    } catch (Exception e) { 
     fixmarker(marker, contextPlace); 
     Log.d("Profileactivity", "" + e); 
    } 

} 

Это, как мы инициализируем Map

private void intialiseMap() { 

try { 
if (dialog == null) 
    dialog = ProgressDialog.show(ProfileActivity1.this, "", 
      getString(R.string.getting_location), true, true); 
}catch(Exception e) { 
Log.e("eybaba",""+e); 
} 
    try { 
     if (googlemap == null) { 
      googlemap = ((MapFragment) getFragmentManager() 
        .findFragmentById(R.id.mapfragment)).getMap(); 
      googlemap.setInfoWindowAdapter(new CustomInfowindow(context)); 
      // check if map is created successfully or not 
      if (googlemap == null) { 
       Toast.makeText(getApplicationContext(), 
         R.string.maps_create_error, Toast.LENGTH_SHORT) 
         .show(); 
      } 
     } 
    } catch (Exception e) { 
    } 
} 
+1

Я предполагаю, что 'intialiseMap (); 'не работает или не возвращает новую карту, и поэтому вызов должен быть' googlemap = intialiseMap(); '. В основном сообщение об ошибке сообщает вам, что не так: 'NullPointerException'. – Thomas

+0

Первое предупреждение показывает, что 'user_longitude' в классе' LatLongDetails' является переменной класса, к которой вы обращаетесь через экземпляр 'user_latlongobj2.user_longitude', но имеет модификатор' static'. Вы можете просто удалить 'static'. – QBrute

+0

@Thomas google = intialiseMap(); дает несовместимые типы error –

ответ

1

В соответствии с просьбой ответ обобщить решение и процесс нахождения его:

1) В NullPointerException и соответствующее сообщение указывают проблема заключается в еще ветви этого блока:

if (googlemap != null) { 
     googlemap.addMarker(marker).showInfoWindow(); 
    }else { 
     intialiseMap(); 
     googlemap.addMarker(marker).showInfoWindow(); 
    } 

Здесь intialiseMap();, кажется, не может инициализировать карту.

2) В intialiseMap() есть блок try-catch, где googlemap должен быть инициализирован, если null. Тем не менее, catch -block пуст, и, таким образом, любое исключение при попытке инициализации теряется.

Примечание для будущих читателей: Если вы поймаете исключение, вы всегда должны всегда обращаться с ним каким-либо образом. Один из простых способов, по крайней мере, сделать что-то, это зарегистрировать его.

Конечно, есть ситуации, когда вы просто хотите проигнорировать исключение , но в этом случае вам действительно нужно знать последствия (что происходит, когда это исключение выбрасывается, почему оно выбрано и т. Д.), И вы всегда должны документ, что вы игнорируете это исключение специально, например с кратким комментарием в вашем коде.

3) После регистрации исключенных исключений ОП понял, что инициализация googlemap не удалась и, таким образом, была способна отслеживать проблему.

Затем он искал ответы и решения и пришли со следующими двумя нитями, которые помогли ему решить проблему: