Я просто переключился на новейшую версию Android-карт-расширений (2.2.0) вместе с новейшими Play Services (6.5.87) и поддержкой библиотеки (21.0.3). И теперь я не могу повторно использовать свой MapFragment.Как повторно использовать SupportMapFragment внутри другого фрагмента
У меня есть MainActivity с NavigationDrawer. Один из фрагментов - фрагмент с фрагментом GoogleMap внутри. Когда я переключаюсь между фрагментами в NavigationDrawer, они воссоздают себя. Раньше я использовал для этого очень простое решение. Я использовал уже надутый вид:
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.getExtendedMapAsync(new OnMapReadyCallback() {
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
setupMap();
}
});
return view;
}
Но теперь это не работает. Карта не отображается, когда этот фрагмент открывается во второй раз.
я могу просто выбросить этот уродливый код
if (view != null) {
ViewGroup parent = (ViewGroup) view.getParent();
if (parent != null) {
parent.removeView(view);
}
return view;
}
И всегда воссоздают вид с внутренней стороны. Но у меня есть тысячи маркеров (конечно, с удивительной кластеризацией), и это занимает много времени, чтобы перекрасить их.
Я знаю, что это не проблема библиотеки расширений, Google Maps имеют такое же поведение. Но, может быть, вы знаете правильное решение?
Тот же вопрос здесь. Кажется, это ошибка библиотеки воспроизведения. – zyamys