在 Xamarin android 中,创建 MapFragment,代码显示 map ,但 mapFragment.Map 始终为 null,我无法设置 map 类型

代码:

var mapFragment = MapFragment.NewInstance (mapOptions);
FragmentTransaction tx = FragmentManager.BeginTransaction();
tx.Add(Resource.Id.map_fragment_container, mapFragment);

map = mapFragment.Map;
if (map != null) {
    map.MapType = GoogleMap.MapTypeNormal;//never comes to this line
}
tx.Commit();

xml:
<FrameLayout
    android:id="@+id/map_fragment_container"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

最佳答案

原因是 map View 不是在调用时创建的

    var mapFragment = MapFragment.NewInstance (mapOptions);

所以我在访问 mapFragment.Map 之前使用了 500 毫秒的延迟;
    handler.PostDelayed (UpdateMap, 500);


    void UpdateMap()
    {
        map = mapFragment.Map;
        if (map != null) {
            map.MapType = GoogleMap.MapTypeNormal;
            map.MoveCamera(cameraUpdate);
            return;
        }

        handler.PostDelayed(UpdateMap, 500);
    }

关于android xamarin google MapFragment.Map 为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26735031/

10-11 22:15