2014-06-22 5 views
0

Fondamentalement, je suis en train de faire une application qui affiche une carte Google.Voici mon code.Android Google Map classeNotFound exception

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 
    <com.google.android.maps.MapView 
    android:id="@+id/mapView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:enabled="true" 
    android:clickable="true" 
    android:apiKey="my key goes here" 
    /> 
</LinearLayout> 

classe MainActivity ...

import com.google.android.maps.MapActivity; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends MapActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
    } 


} 

Quand je lance, je reçois le message suivant

06-22 15:54:03.622: E/AndroidRuntime(26187): FATAL EXCEPTION: main 
06-22 15:54:03.622: E/AndroidRuntime(26187): java.lang.RuntimeException: 
Unable to instantiate activity 
ComponentInfo{com.example.maptutorial/com.example.maptutorial.MainActivity}: 
java.lang.ClassNotFoundException: com.example.maptutorial.MainActivity 

Peut-être que je pourrais faire quelque chose de mal dans mon dossier Manifest, et peut pas le voir ..

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.maptutorial" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="18" /> 

<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.maptutorial.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    </application> 

</manifest> 
+0

Avez-vous importé des services google play dans votre espace de travail et les avez-vous ajoutés dans votre projet? – Dev

+0

oui j'ai fait mon ami. Je ne reçois maintenant aucune erreur..Mais je vois des grilles au lieu de la carte lorsque je cours l'application .. – Theo

+0

avez-vous activé la bascule sur la console de développeur lors de la création du projet? – Dev

Répondre

0

Je pense que vous utilisez MAP API version 1 qui est obsolète. Pourquoi Cant-vous utiliser l'API 2 fragmenter ou support fragment (https://developers.google.com/maps/documentation/android/start)

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

fichier Manifest

<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" /> 
<meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="AIzaSyC8qEhdHVd3ZtxCR0549UqwnM72h0jgoMY" /> 
+0

En ajoutant juste un MapFragment au lieu de SupportMapFragment, l'application va planter pour les téléphones utilisant Android version 2.3. Vous avez à nous SupportMapFragment. Pour les mobiles qui utilisent la version Android plus de 4.0, il n'est pas nécessaire d'utiliser SupportMapFragment. Je sais que les choses pourraient être très en désordre avec les cartes. – Theo

+0

C'est le développeur que l'on a choisi pour quelle version ils étaient en train de développer. –

1

vous avez oublié d'ajouter des utilisations bibliothèque dans votre fichier manifeste, dans ce cas

<application> 
    ... 
    <uses-library android:name="com.google.android.maps" 
    android:required="true" /> 
    ... 
</application> 
+0

Je vois toujours la grille .. – Theo

0

Fondamentalement, je devais utiliser l'utilisation du SupportMapFragment comme celui-ci pour le faire fonctionner pour Android 2.3 .Aussi a dû créer une nouvelle clé API ..

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

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

</RelativeLayout> 

Voici un exemple de code java.

public class EmergencyMap extends FragmentActivity { 
static final LatLng ASTYNOMIA = new LatLng(39.620530, 22.401728); 
static final LatLng PYROSVESTIKH = new LatLng(39.632652, 22.398704);        
static final LatLng genikonosokomeio = new LatLng(39.642081, 22.422350); 
static final LatLng panosokomeio = new LatLng(39.609993, 22.385722); 

private GoogleMap map; 
final int RQS_GooglePlayServices = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_emergency_map); 

    map = ((SupportMapFragment)getSupportFragmentManager() 
      .findFragmentById(R.id.map)).getMap(); 

    map.addMarker(new MarkerOptions().position(ASTYNOMIA).title("ΑΣΤΥΝΟΜΙΑ")); 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(ASTYNOMIA,15)); 
    map.animateCamera(CameraUpdateFactory.zoomTo(20),2000,null); 


    map.addMarker(new MarkerOptions().position(PYROSVESTIKH).title("ΠΥΡΟΣΒΕΣΤΙΚΗ")); 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(PYROSVESTIKH,15)); 
    map.animateCamera(CameraUpdateFactory.zoomTo(20),2000,null); 

    map.addMarker(new MarkerOptions().position(genikonosokomeio).title("ΓΕΝΙΚΟ 
    ΝΟΣΟΚΟΜΕΙΟ")); 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(genikonosokomeio,15)); 
    map.animateCamera(CameraUpdateFactory.zoomTo(20),2000,null); 

    map.addMarker(new MarkerOptions().position(panosokomeio).title("ΠΑΝΕΠΙΣΤΗΜΙΑΚΟ 

    ΝΟΣΟΚΟΜΕΙΟ")); 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(panosokomeio,15)); 
    map.animateCamera(CameraUpdateFactory.zoomTo(20),2000,null); 

    map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
} 

protected void onResume() { 
    super.onResume(); 

    int resultCode = 
    GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 
    if (resultCode == ConnectionResult.SUCCESS){ 
     Toast.makeText(getApplicationContext(), 
       "Το κινητό σας υποστηρίζει GooglePlayServices", 
       Toast.LENGTH_LONG).show();   
    }else{ 
    GooglePlayServicesUtil.getErrorDialog(resultCode, this,RQS_GooglePlayServices); 
    } 
} 

} 
0

Il est API Google Map 2. Voici une partie de mon dossier manifeste.

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19" /> 
    <permission 
    android:name="com.example.larissaguide.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="larissa.app.permission.MAPS_RECEIVE" /> 
<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" /> 
<!-- 
The following two permissions are not required to use 
Google Maps Android API v2, but are recommended. 
--> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" /> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="larissa.app.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="MY_KEY_GOES_HERE" /> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" />