我有一個SupportMapFragmentManagers getMapAsync()不會觸發onMapReady(GoogleMap的地圖)
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;
}
}
根據我的斷點onViewCreated()
被調用,但onMapReady()不叫(上this.googleMap = map
斷點觸發)
在Android 5,6和7,它迄今爲止工作正常,我可以看到地圖.. 在Android 4.X(API 16 - API 19)設備上我的應用程序啓動,但它似乎凍結在那裏...我看到一個白色的空白屏幕。
在Android 4.X OS設備上: 1.使用getFragmentManager(),map條件對象在else條件後爲null。 2.使用getChildFragmentMenager(),mapfragment似乎是有效且非空的,但是onMapReady未觸發。
我在這裏錯過了什麼?
爲什麼不使用擴展'SupportMapFragment'或直接使用它? Android Jelly(即API 16),後來覆蓋支持95.2%Google Play的設備。 –
@JPVentura我暫時這樣做了,但沒有改變。我有同樣的結果。 –
1.爲什麼在'MyMapFragment'中嵌套'SupportMapFragment'? 2.爲什麼你明確檢查沒有人使用的API級別? –