2013-07-04 4 views
0

J'essaie d'ajouter Google Maps v2 à un projet Mvx en combinant Monodroid MapsAndLocationDemo_v2 avec la démo Fraggle N = 26 de NPlus1DaysOfMvvmCross.Problème SupportMapFragment avec MvvmCross

J'ai ajouté des services Google Play Maps démo et je suis affiche avec succès une carte en utilisant:

<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" /> 

Avec la démo Fraggle, le même fragment provoque une erreur Android.Views.InflateException.

J'ai suivi les mêmes étapes pour ajouter des services Google Play deux projets, et emploie le même fichier AndroidManifest.xml dans les deux projets

<?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> 

autres que d'ajouter le fragment et la mise à jour du manifeste, il y a pas de changement au code démo Fraggle. La vue de travail de la carte démo est

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); 
     } 
    } 
} 

et la vue depuis la version MVX est:

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); 
     } 
    } 
} 

J'ai aussi essayé référencer la dll services Google Play à partir de la démo de travail, et ont la mêmes résultats.

+1

avez-vous ajouté les détails de l'application de démonstration de fraggle à la carte api de votre console api? –

+0

Je l'ai fait dans l'autre sens, a changé les détails de l'application fraggle pour correspondre à la clé API, mais cela devrait avoir le même effet. – Neil

Répondre

1

Ah. C'était une erreur dans le fichier AndroidManifest.xml. La clé d'API Google Maps doit se trouver à l'intérieur du noeud d'application. Si ce n'est pas le cas, cela provoque une exception.

<?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>