#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
.