【发布时间】:2017-10-11 02:45:32
【问题描述】:
我正在尝试将谷歌地图集成到 Xamarin Android。但是,收到错误,如标题中所写。这个错误出现在我的 SetContentView (Resource.Layout.Main); 如下所示:
Error occurred in MainActivity.cs
我的 google play 地图服务是最新的。我已经尝试清理和重建项目,也重新启动 VS 对我不起作用。没有论坛回答我的问题。
这些是我在项目中写的:
MainActivity.cs
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Gms.Maps;
namespace Google_maps.Droid
{
[Activity (Label = "@string/Google_maps.Android", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity, IOnMapReadyCallback
{
private GoogleMap mMap;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
SetUpMap();
}
private void SetUpMap()
{
if (mMap == null)
{
FragmentManager.FindFragmentById<MapFragment>(Resource.Id.map).GetMapAsync(this);
}
}
public void OnMapReady(GoogleMap googleMap)
{
mMap = googleMap;
}
}
}
Main.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
</LinearLayout>
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Click Me!</string>
<string name="app_name">Google_maps.Android</string>
<string name="google_maps_key">my_API_key</string>
<string name="Google_maps.Android">Google maps</string>
</resources>
最后,
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Google_maps.google_mapsAndroid" android:installLocation="preferExternal">
<uses-sdk android:minSdkVersion="15" />
<application android:label="Google_maps.Android" android:icon="@drawable/Icon">
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.maps.V2.API_KEY" android:value="@string/google_maps_key" />
</application>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
</manifest>
有关更多信息,我遵循了 youtuber Joe Rock 的方法,他教我们如何设置谷歌地图。这是他的视频链接:
https://www.youtube.com/watch?v=W6Q0olRPsus
如果您查看评论部分,您会发现许多其他人也遇到了同样的问题。该视频是 2 年前制作的,所以我可以理解为什么它在目前的情况下不起作用。但是,如果你们能启发我将谷歌地图集成到我的 android 移动应用程序的正确方法,我将不胜感激,如果不知何故,这种方法不再可靠。提前谢谢你。
问候, Xamarin 和编程新手。
编辑:
当我将鼠标拖到 SetContentView (Resource.layout.Main) 时,它会显示 void Activity.SetContentView(int LayoutResID)(+2 重载)
在布局资源上设置活动内容。
我应该担心这个吗?
【问题讨论】:
-
一般来说,Fragment 不能嵌入到扩展 Activity 的类中,而是应该扩展 FragmentActivity
-
那我可以知道我到底应该怎么做吗?
-
将
public class MainActivity : Activity更改为public class MainActivity : FragmentActivity并添加适当的导入语句 -
@Dinash 完成,我已经导入了
using Android.Support.V4.App,还有另一个方法Android.Support.V4.App.FragmentActivity, IOnMapReadyCallBack。收到与以前相同的错误; (未处理的异常:Android.Views.InflateException:二进制 XML 文件第 1 行:二进制 XML 文件第 1 行:发生错误膨胀类片段) -
你试图在什么 API 中运行你的代码?同时分享构建 gradle。
标签: android xml google-maps xamarin.android inflate-exception