Ich habe einenSupportMapFragmentManagers getMapAsync() nicht auslösen onMapReady (GoogleMap Karte)
public abstract class MyMapFragment 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);
// 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());
} 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;
}
}
Nach meinen Stützpunkte onViewCreated()
genannt wird, aber onMapReady() wird nicht aufgerufen (Stützpunkt auf this.googleMap = map
nicht ausgelöst)
Auf Android 5, 6 und 7 funktioniert es gut und ich kann die Karte sehen .. Auf Android 4.X (API 16 - API 19) Geräte startet meine App, aber dann scheint es dort einzufrieren ... Ich sehe einen weißen leeren Bildschirm.
Auf Android 4.X-Betriebssystemgeräten: 1. Mit getFragmentManager() ist das Objekt mapFragment nach der else-Bedingung null. 2. Mit getChildFragmentMenager() scheint das Mapfragment gültig und nicht null zu sein, aber onMapReady wurde nicht ausgelöst.
Was fehlt mir hier?
Warum nicht extend 'SupportMapFragment' verwenden oder direkt verwenden? Android Jelly (d. H. API 16) und höher decken 95,2% der von Google Play unterstützten Geräte ab. –
@JPVentura Ich tat das vorübergehend, aber das änderte nichts. Ich hatte das gleiche Ergebnis. –
1. Warum schachtest du 'SupportMapFragment' in' MyMapFragment'? 2. Warum suchen Sie explizit nach einer API-Ebene, die niemand verwendet? –