2013-07-04 2 views
0

Monodroid MapsAndLocationDemo_v2와 NPrus1DaysOfMvvmCross의 N = 26 Fraggle 데모를 결합하여 Mvx 프로젝트에 Google Maps v2를 추가하려고합니다.MvvmCross의 SupportMapFragment 문제

내가 구글이지도 데모에 Play 서비스가 성공적으로 사용하여지도를 표시하고 추가 한 :

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment" /> 

을 프 래글 데모로, 같은 조각은 Android.Views.InflateException 오류가 발생합니다.

나는 구글, 거기에 두 프로젝트에 서비스를 플레이하고 매니페스트 조각을 추가하고 업데이트하는 것보다

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.app" android:installLocation="auto" android:versionCode="1" android:versionName="1"> 
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> 
    <application android:label="Demo"></application> 
    <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="com.demo.app.permission.MAPS_RECEIVE" /> 
    <permission android:name="com.demo.app.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> 
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AAAAAAAAAAAAAAAAA-xxxxxxxxxxxxxxxxxxxxxx" /> 
</manifest> 

다른 두 프로젝트에서 동일한의 AndroidManifest.xml 파일을 사용하고 추가 동일한 단계를 따랐다 Fraggle 데모 코드는 변경되지 않습니다.

using Android.App; 
using Android.OS; 
using Cirrious.MvvmCross.Droid.Fragging; 
using Rock.Core.ViewModels; 

namespace Rock.Droid.Views 
{ 
    [Activity(Label = "View for FirstViewModel")] 
    public class FirstView : MvxFragmentActivity 
    { 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 
      SetContentView(Resource.Layout.FirstView); 
     } 
    } 
} 

나는 또한 구글이 작업 데모에서 서비스를 DLL을 재생 참조 해봤하고는이 맵 데모에서 작업보기

namespace SimpleMapDemo 
{ 
    using Android.App; 
    using Android.OS; 
    using Android.Support.V4.App; 

    [Activity(Label = "@string/basic_map")] 
    public class BasicDemoActivity : FragmentActivity 
    { 
     protected override void OnCreate(Bundle bundle) 
     { 
      base.OnCreate(bundle); 

      SetContentView(Resource.Layout.BasicDemo); 
     } 
    } 
} 

과 MVX 버전에서보기입니다 같은 결과.

+1

fraggle 데모 앱의 세부 정보를 api 콘솔의 api 키에 추가 했습니까? –

+0

나는 그 반대의 방식으로 api 키와 일치하도록 fraggle 앱 세부 정보를 변경했지만 동일한 효과가 있어야합니다. – Neil

답변

1

아. AndroidManifest.xml 파일에서 실수였습니다. 지도 API 키는 애플리케이션 노드 내에 있어야합니다. 거기에 없으면 예외가 발생합니다.

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.app" android:installLocation="auto" android:versionCode="1" android:versionName="1"> 
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> 
    <application android:label="Demo"> 
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AAAAAAAAAAAAAAAAA-xxxxxxxxxxxxxxxxxxxxxx" /> 
    </application> 
    <uses-feature android:glEsVersion="0x00020000" android:required="true" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="com.demo.app.permission.MAPS_RECEIVE" /> 
    <permission android:name="com.demo.app.permission.MAPS_RECEIVE" android:protectionLevel="signature" /> 
</manifest> 
관련 문제