Hallo, ich habe ein
Java
public abstract class MyMapFragment extends Fragment implements OnMapReadyCallback
{
//
public GoogleMap googleMap;
SupportMapFragment mapFragment;
@IdRes
public abstract int getSupportMapFragId();
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// EDIT: http://stackoverflow.com/a/36592000/5102206
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
// Do something for lollipop and above versions
mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(getSupportMapFragId());
mapFragment.getMapAsync(this);
} else {
// do something for phones running an SDK before lollipop
mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(getSupportMapFragId());
mapFragment.getMapAsync(this);
};
}
//..
@Override
public void onMapReady(GoogleMap map) {
this.googleMap = map;
}
}
Alles anzeigen
Das tritt nur bei Android 4.X (API 16-19) Geräten und Emulatoren auf. Ab Android 5.0 alles gut, und die Map ist sichtbar.
Je nach API Version benutze ich getChildFragmentManager() oder getFragmentManager() ; siehe hier:
http://stackoverflow.com/a/36592000/5102206
In der ELSE Bedingung Zeile 20 ist das mapFragment Objekt null.
wenn ich es ohne if else mache und mittels (SupportMapFragment) getChildFragmentManager().findFragmentById(getSupportMapFragId()); ist es immer gesetzt, jedoch friert es ein und onMapReady wird nicht aufgerufen.
Was habe ich vergessen oder wasamche ich falsch?
Danke schonmal im voraus.
VG Mrt