Не удается инициализировать GoogleMap, возвращает null

#android #google-maps

#Android #google-карты

Вопрос:

Я пытаюсь инициализировать экземпляр GoogleMap, но SupportMapFragment возвращает null. Вот мой класс MainActivity:

 public class MainActivity extends FragmentActivity 
{
GoogleMap gMap;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    initMap();                            //here is the NullPointerExeption
    setContentView(R.layout.activity_map);
}


public boolean initMap()
{

    if (gMap == null) {
        SupportMapFragment mapFrag =
                (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.fragMap);
        gMap = mapFrag.getMap();
    }
    return (gMap != null);
}
  

}

И это мой activity_map.xml:

 <?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@ id/fragMap"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
  

в чем проблема? если я закомментирую функцию initMap (), она отлично работает и отображает карту.

Комментарии:

1. Пробовал вызывать setContentView(R.layout.activity_map) раньше initMap() ? Представление не инициализируется перед попыткой извлечения карты

2. блин! это решило мою проблему!

Ответ №1:

Я думаю, вам следует изменить порядок следующим образом

 setContentView(R.layout.activity_map);     
initMap();  
  

Сначала вы должны setContentView(R.layout.activity_map); , а затем ссылаться на карту из SupportMapFragment .