Есть MainActivity c NavigationDrawer. Один из фрагментов включает в себя фрагмент с картой (SupportMapFragment). При переключении между ними хочется, чтобы карта не создавалась заново. Для этого использовался вот такой не самый красивый, но работающий код с переиспользованием view:
public View onCreateView(LayoutInflater inflater, ViewGroup container, final Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
return view;
}
view = inflater.inflate(R.layout.fragment_map, container, false);
SupportMapFragment mapFragment = SupportMapFragment.newInstance();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.container, mapFragment).commit();
mapFragment.getMapAsync(new OnMapReadyCallback() {
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
setupMap();
}
});
return view;
}
В последней версии Play Services (6.5.87) и Support Library (21.0.3) такая возможность пропала. При повторном открытии фрагмента карта не отображается. Все другие элементы отображаются, а карта пустая.
Я могу по-нормальному все время делать "inflate view", но на карте тысячи маркеров (кластеризуются через maps-extensions) и их перерисовка занимает заметное время.
Есть какой-нибудь способ не пересоздавать карту?