【发布时间】:2016-04-13 14:25:08
【问题描述】:
我目前正在使用 Xamarin.Android 开发一个 android 应用程序。在这个应用程序中,我使用 DrawerLayout(来自 Support library v4)来显示我的应用程序内容和一个菜单,我可以通过按下工具栏中的按钮或向右滑动来打开它。
在抽屉的第一部分(页面内容),我有一个工具栏替换了经典的操作栏、一个搜索栏和我的 MapFragment。
在菜单部分,我有一个包含线性布局的滚动视图,它本身包含一些元素,如按钮、文本视图等,用户将使用它们来连接或注册。
菜单滑动顺畅,每个元素都正确响应,但地图片段显示地图确实有问题。几秒钟后,它会显示一个空网格,我必须点击片段才能加载地图的一些部分。几乎没有控件响应,有时双击会在等待很长时间后起作用,并且加载更精确的图块需要很长时间。
显然有些东西阻止了我的地图正确加载,但我不知道它是什么。
这是地图片段:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapFragment"
android:layout_marginTop="94dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment" />
这是我在活动文件中加载地图的方式(在 OnCreate 函数中):
MapFragment mapFrag = (MapFragment)FragmentManager.FindFragmentById(Resource.Id.mapFragment);
GoogleMap map = mapFrag.Map;
if(map != null)
{
// The GoogleMap object is ready to go (well, should be)
}
我按照这个来创建我的地图片段:https://developer.xamarin.com/guides/android/platform_features/maps_and_location/maps/part_2_-_maps_api/
如果需要,我可以提供更多信息。我完全不知道这是从哪里来的。我在一个测试应用程序中使用了完全相同的代码(除了它是一个简单的线性布局,没有抽屉,也没有边距)并且它运行良好,这就是我感到困惑的原因。
编辑:让模拟器和我的手机在我写作时运行应用程序(至少花了我五分钟),但它仍然没有正确响应。在 Genymotion 模拟器 (API 16) 和我的 OnePlus One (API 21) 上测试,结果相同。
提前致谢。
【问题讨论】:
-
您确定加载地图是导致挂断的原因吗?
-
您有任何网络问题吗?假设您的应用程序没有造成阻塞问题,我会查看您的网络活动(通过 Charles、WireShark 等)以检查来自 Google 的 CDN 的响应时间。您手机上的 Google 地图应用和 Genymotion 可以吗?
-
是的,我确定是地图造成的,因为虽然地图无法加载,但其他一切在应用程序中都运行良好。 @SushiHangover 这就是我在某个时候的想法,所以我检查了我的网络,这似乎工作正常。使用模拟器的光纤配置正确的 Wifi 网络,我的手机使用 LTE。我通过启动您可以使用我提供的 xamarin 链接制作的示例应用程序进行了仔细检查,并且地图正在顺利加载和响应。问题显然出在我的代码中,但我找到了一个神奇的解决方案:SupportMapFragment 而不是 MapFragment。
标签: android android-layout xamarin google-maps-api-2 mapfragment