Xamarin.Android:第二次启动时MapFragment中的Android.Views.InflateException

时间:2016-12-28 06:20:59

标签: xml google-maps xamarin xamarin.android

我正在尝试使用android地图来定位指定的地址。我能够第一次成功地在地图上找到并标记地址。但是当我尝试找到另一个地址时,它会在片段中抛出异常:

  

二进制XML文件行#1:错误扩充类片段

axml布局:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/myMap"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          class="com.google.android.gms.maps.MapFragment" />

问题是当第二次更换片段以找到新地址时,android无法从axml中膨胀。它在网上崩溃了:

view = inflater.Inflate(Resource.Layout.map_layout, null);

enter image description here

我浏览了这些链接,但可以找到解决方案:

Android map v2 error on second inflating

Android - SupportMapFragment error when openning for second time

https://forums.xamarin.com/discussion/7378/google-maps-wont-work-error-on-fragmenttransaction

我也尝试使用SupportMapFragment,行为相同。

1 个答案:

答案 0 :(得分:1)

最后,经过大量搜索,我找到了解决方案。我没有使用MapFragment,而是使用了MapView。以下是我的代码:

axml布局:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/myMap"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          class="com.google.android.gms.maps.MapView" />

片段代码:

public class MapViewFragment : Android.Support.V4.App.Fragment, IOnMapReadyCallback
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View view = inflater.Inflate(Resource.Layout.map_layout, null);
        // Now this line works fine without throwing Inflate Exception
    }
}