Переместите initGoogleMaps(savedInstanceState);
в onViewCreated
.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_friends, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Bundle mapBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
if (mapBundle == null) {
mapBundle = new Bundle();
}
initGoogleMaps(mapBundle);
}
private void initGoogleMaps(Bundle mapBundle) {
mapView.onCreate(mapBundle);
mapView.getMapAsync(this);
}
Если посмотреть на документацию, onSaveInstanceState()
действительно отсутствовал:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY);
if (mapViewBundle != null) {
outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle);
mMapView.onSaveInstanceState(mapViewBundle);
}
}
Однако mapView.onCreate(bundle)
ожидает не допускающего значения NULL Bundle и, следовательно, вышеупомянутое было обновлено, чтобы передать Bundle, не допускающий значения NULL, для инициализации карты.