2017-02-22 23 views
0

Я пытаюсь добавить карту на MvxFragment, но получаю следующее сообщение об ошибкеAndroidGms.Maps.MapFragment к Android.Views.View

Там нет неявного ссылочного преобразования из «AndroidGms.Maps.MapFragment 'до '' Android.Views.View

XML

<fragment 
    android:id="@+id/map" 
    android:layout_width ="match_parent" 
    android:layout_height ="match_parent" 
    android:name="com.google.android.gms.maps.MapFragment"/> 

View.cs

public class MapView : MvxFragment<MapViewModel>, IOnMapReadyCallback 
{ 
    private GoogleMap mMap; 
    private View view; 

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 

     var ignored = base.OnCreateView(inflater, container, savedInstanceState); 
     view = this.BindingInflate(Resource.Layout.MapView, null); 
     SetUpMap(); 
     return view; 
    } 

    private void SetUpMap() 
    { 
     if (mMap == null) 
     { 
     // the error appears here 
     view.FindViewById<MapFragment>(Resource.Id.map).GetMapAsync(this); 
     } 
     } 
} 

enter image description here


Update:

Если я либо использовать FragmentManager или ChildFragmentManager, то я получаю следующее сообщение об ошибке

enter image description here

ответ

1

Фрагмент - это не вид, поэтому вы не можете использовать метод FindViewById. Что же тогда, как вы теперь находите свой Фрагмент?

Вам необходимо использовать FragmentManager или ChildFragmentManager (я расскажу вам, какой из них использовать в каком случае).

Тогда вы можете позвонить FindFragmentById, чтобы получить фрагмент на FragmentManager:

var mapFragment = FragmentManager.FindFragmentById<MapFragment>(Resource.Id.map); 

Теперь вы должны быть в состоянии назвать GetMapAsync на вашем MapFragment, чтобы получить GoogleMap.

EDIT:

Похоже ChildFragmentManager не имеет универсальной версии FindFragmentById, вы можете сделать это вместо того, чтобы:

var mapFragment = ChildFragmentManager.FindFragmentById(Resource.Id.map).JavaCast<MapFragment>(); 
+0

смотрите мое обновление. – hotspring

+0

См. Мое редактирование. В нем описано, как использовать JavaCast – Cheesebaron

+0

Использовать эмулятор с Play Services – Cheesebaron

Смежные вопросы