Google maps Xamarin Android谷歌地图片段

Google maps Xamarin Android谷歌地图片段,google-maps,android-fragments,xamarin,google-api,Google Maps,Android Fragments,Xamarin,Google Api,我是xamarin的新手,我需要在应用程序中加入谷歌地图 我已从xamarin下载了以下示例: 经过一些修改,它工作了,这个项目显示了地图 以下是有效的项目代码: /MainActivity.cs/ 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用Android.App; 使用Android.Content; 使用Android.Gms.Common; 使用Android.OS; 使用Android.Util; 使用Android.Vi

我是xamarin的新手,我需要在应用程序中加入谷歌地图

我已从xamarin下载了以下示例:

经过一些修改,它工作了,这个项目显示了地图

以下是有效的项目代码:

/MainActivity.cs/

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用Android.App;
使用Android.Content;
使用Android.Gms.Common;
使用Android.OS;
使用Android.Util;
使用Android.Views;
使用Android.Widget;
使用AndroidUri=Android.Net.Uri;
名称空间SimpleMapDemo
{
[Activity(Label=“@string/app_name”,MainLauncher=true,Icon=“@drawable/Icon”)]
公共课活动:活动
{
公共静态只读int InstallGooglePlayServicesId=1000;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.BasicDemo);
}
}
}
/BasicDemo.axml/


/AndroidManifest.xml/


问题是,当我尝试将此代码传递到要添加映射的现有项目时,在执行时会抛出异常:

Android.Views.InflateException:二进制XML文件行#1:膨胀类片段时出错

失败的代码:

/SplashScreen.cs/

使用系统;
使用Android.App;
使用Android.Content;
使用Android.Runtime;
使用Android.Views;
使用Android.Widget;
使用Android.OS;
使用系统线程;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用cirries.MvvmCross.Droid.Views;
使用Android.Content.PM;
//使用Android.Gms.Common;
使用AndroidUri=Android.Net.Uri;
使用Android.Util;
使用Android.Gms.Common;
使用Android.Support.V4.App;
使用Android.Gms.Maps;
命名空间ProjectWithMap
{
[活动(
Label=“ProjectWithMap”,
MainLauncher=true,
Icon=“@drawable/Icon”,
//Theme=“@style/Theme.Splash”,
ScreenOrientation=ScreenOrientation.肖像,
NoHistory=true)]
公共课:活动
{
公共静态只读int InstallGooglePlayServicesId=1000;
私有地图片段地图;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.provaMapa);
}
}
}
/provaMapa.axml/


/AndroidManifest.xml/


这段代码给了我一个例外:

Android.Views.InflateException:二进制XML文件行#1:膨胀类片段时出错

我不明白为什么在一个项目中有效,而在另一个项目中无效,我试图搜索这个错误并找到多个解决方案,尝试了所有我喜欢的方法却没有得到好的结果

将com.google.android.gms.maps.MapFragment更改为com.google.android.gms.maps.SupportMapFragment

将公共类SplashScreen:活动更改为公共类SplashScreen:碎片活动

但什么都不起作用,总是同样的错误

我错过了什么?为什么它在一个项目中工作而在另一个项目中不工作

编辑

错误似乎出现在清单中,在我执行时,在应用程序输出处:

<meta-data android:name="com.google.android.maps.V2.API_KEY" android:value="yourKey" />

就像它得到了谷歌服务的清单

而我已经添加了我的钥匙

<meta-data android:name="com.google.android.maps.V2.API_KEY" android:value="key" />

什么清单是应用程序的清单,应用程序的清单,谷歌服务的清单

编辑:


最后是xamarin或visual studio的一个bug,删除清单并再次创建它解决了问题。

向清单文件添加
权限。

添加额外的工具

“谷歌播放服务”

在Android Sdk管理器中。。。请注意,只有一个标记“application”(拼写正确)



您是否也在项目中定义/包含了
SampleMapActivity
类?演示项目使用它来实现将包含片段的布局。我没有定义/包括SampleMapActivity,但由于它显示了工作的代码,我没有在MainActivity中使用它:SetContentView(Resource.layout.BasicDemo);直接地,我从主要活动转到basicdemo视图,这在测试项目中起作用,但在实际项目中不起作用。最后是xamarin或visual studio的一个bug,删除清单并再次创建清单解决了这个问题。如果有人希望在xamarin android中集成google地图,那么这将是一个有用的解决方案
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme">
    <meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/mapkey"/>
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <uses-library android:name="org.apache.http.legacy" android:required="false"/>
</application>