我在此网站上关注了本教程:http://www.c-sharpcorner.com/article/xamarin-android-create-google-map-with-marker/。它在MainActivity中100%工作,但是一旦我将代码移动到片段,我就会收到一条错误消息,指出'对象未设置为实例'。可能是什么问题呢 ?这是我的代码:
public class ViewAlert : Fragment, IOnMapReadyCallback
{
View view = null;
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.Inflate(Resource.Layout.ViewAlert, container, false);
try
{
SetUpMap();
}
catch (Exception ex)
{
}
return view;
}
private void SetUpMap()
{
if (GMap == null)
{
FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);
}
}
public void OnMapReady(GoogleMap googleMap)
{
this.GMap = googleMap;
GMap.UiSettings.ZoomControlsEnabled = true;
LatLng latlng = new LatLng(Convert.ToDouble(gpsLatitude), Convert.ToDouble(gpsLongitude));
CameraUpdate camera = CameraUpdateFactory.NewLatLngZoom(latlng, 15);
GMap.MoveCamera(camera);
MarkerOptions options = new MarkerOptions()
.SetPosition(latlng)
.SetTitle("Chennai");
GMap.AddMarker(options);
}
}
此行发生错误:
FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);
我试过了:
view.FragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);
但它没有用。
地图加载时没有标记。破解代码负责将标记放在地图上。
答案 0 :(得分:2)
由于MapFragment
位于片段ViewAlert
内,您必须使用ChildFragmentManager:
ChildFragmentManager.FindFragmentById<MapFragment>(Resource.Id.googlemap).GetMapAsync(this);