1

저는 Xamarin을 사용하고 있으며 MapFragment 개체가 아닌 SupportMapFragment 개체를 사용하도록 Google Maps API 2 샘플을 수정했습니다.MapFragment 대신 SupportMapFragment 사용

InitMapFragment 기능에 대한 도움을받을 수 있습니까? 여기

코드입니다 : 유형 MapFragment 될하는 데 사용

private void InitMapFragment() 
{ 
    _mapFragment = FragmentManager.FindFragmentByTag("map") as SupportMapFragment; 
    if (_mapFragment == null) 
    { 
     GoogleMapOptions mapOptions = new GoogleMapOptions() 
      .InvokeMapType(GoogleMap.MapTypeNormal) 
      .InvokeZoomControlsEnabled(true) 
      .InvokeCompassEnabled(true); 

     FragmentTransaction fragTx = FragmentManager.BeginTransaction(); 
     _mapFragment = SupportMapFragment.NewInstance(mapOptions); 
     fragTx.Add(Resource.Id.mapWithOverlay, _mapFragment, "map"); 
     fragTx.Commit(); 
    } 
} 

_mapFragment,하지만 지금 SupportMapFragment입니다.

또한 액티비티는 현재 Activity에서 상속 받고 있습니다. FragmentActivity이되어야합니까? 여기

내가 점점 오전 오류입니다 :

Error CS0039: Cannot convert type 'Android.App.Fragment' to 'Android.Gms.Maps.SupportMapFragment' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion

Error CS1503: Argument 2: cannot convert from 'Android.Gms.Maps.SupportMapFragment' to 'Android.App.Fragment'

내가 오히려 FragmentManager보다 SupportFragmentManager를 사용할 필요가 아직 도움을 좋아한다고 확신을주십시오.

편집

SupportFragmentManager를 사용하려고, 나는 다음과 같은 오류를 얻고있다 : 사전에

Error CS0103: The name 'SupportFragmentManager' does not exist in the current context

감사를

SupportFramgentManager 그래서 활동이 FragmentActivity를 확장해야합니다 FragmentActivity에서 상속
+0

올바른가요? getSupportFragmentManager()를 사용하여 SupportMapFragment를 가져와야합니다. –

+0

제 편집물 좀 보시 겠어요? – user3548779

+0

저는 Xamarin을 한번도 사용하지 못했습니다.하지만 사마린은 조금 다릅니다. getSupportFragmentManager()가 없습니다. 이 링크는 http://forums.xamarin.com/discussion/14731/fragment-support-fragment-manager-does-not-exist-in-current-context에 도움이 될 수 있습니다. - Android.Support.V4부터 시작하겠습니다. .App.FragmentManager. –

답변

1

. 그런 다음 코드를 다음과 같이 수정하십시오.

private void InitMapFragment() 
{ 
    _mapFragment = SupportFragmentManager.FindFragmentByTag("map") as SupportMapFragment; 
    if (_mapFragment == null) 
    { 
     GoogleMapOptions mapOptions = new GoogleMapOptions() 
      .InvokeMapType(GoogleMap.MapTypeNormal) 
      .InvokeZoomControlsEnabled(true) 
      .InvokeCompassEnabled(true); 

     FragmentTransaction fragTx = SupportFragmentManager.BeginTransaction(); 
     _mapFragment = SupportMapFragment.NewInstance(mapOptions); 
     fragTx.Add(Resource.Id.mapWithOverlay, _mapFragment, "map"); 
     fragTx.Commit(); 
    } 
}