2013-01-09 7 views
6

Voglio caricare l'API di google map sul mio android. Provo tutto quello che cerco ma si blocca ancora. questo è il mio MainActivity.javaGoogle map Android API V2 si è schiantato

package com.example.androidmapsv2; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

import com.google.android.gms.common.GooglePlayServicesUtil; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Show the Up button in the action bar. 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); 

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

    } 

} 

Questo è il mio layout activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<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> 

Questo è il mio manifesto

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

    <uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="16" /> 

    <permission 
     android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" > 
    </permission> 

    <uses-permission android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" /> 
    <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_FINE_LOCATION" /> 

    <!-- Require OpenGL ES version 2 --> 
    <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" > 
     <uses-library android:name="com.google.android.maps" /> 

     <activity 
      android:name="com.example.androidmapsv2.MainActivity" 
      android:label="aaa" > 
      <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="AIzaSyDr9xN8L3sF6W2ZRWmTR7q0lhTeOWhXEfQ" /> 
    </application> 

</manifest> 

Questa è la chiave che ho enter image description here

Questo è l'incl. ded (risolto in aggiornamento) enter image description here

e io non avere un reale dispositivo Android, così ho installarlo su emulatore in questo tutorial

Questo è il logcat

01-09 18:05:19.184: E/Trace(1366): error opening trace file: No such file or directory (2) 
01-09 18:05:19.354: W/dalvikvm(1366): Unable to resolve superclass of Lcom/example/androidmapsv2/MainActivity; (5) 
01-09 18:05:19.354: W/dalvikvm(1366): Link of class 'Lcom/example/androidmapsv2/MainActivity;' failed 
01-09 18:05:19.365: D/AndroidRuntime(1366): Shutting down VM 
01-09 18:05:19.365: W/dalvikvm(1366): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
01-09 18:05:19.384: E/AndroidRuntime(1366): FATAL EXCEPTION: main 
01-09 18:05:19.384: E/AndroidRuntime(1366): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.androidmapsv2/com.example.androidmapsv2.MainActivity}: java.lang.ClassNotFoundException: com.example.androidmapsv2.MainActivity 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.os.Looper.loop(Looper.java:137) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.reflect.Method.invoke(Method.java:511) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at dalvik.system.NativeStart.main(Native Method) 
01-09 18:05:19.384: E/AndroidRuntime(1366): Caused by: java.lang.ClassNotFoundException: com.example.androidmapsv2.MainActivity 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.Instrumentation.newActivity(Instrumentation.java:1053) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974) 
01-09 18:05:19.384: E/AndroidRuntime(1366):  ... 11 more 

AGGIORNAMENTO

Ho provato a copiare google-play-services_lib nell'area di lavoro e il segno rosso scompare enter image description here ma arriva un altro errore. Manca google-play-services_lib.jar (il nome della cartella lib + .jar). come risolverlo enter image description here quando faccio clic su google-play-services_lib.jar, il pulsante Rimuovi non viene visualizzato (come nella foto). Comunque provo a rimuovere tutte le dipendenze di Android e ad importare di nuovo l'altro lib. ora funziona, ma continua a bloccarsi.

Ho provato cambiamento

MainActivity extends Activity 

Per

MainActivity extends FragmentActivity 

e il layout

<?xml version="1.0" encoding="utf-8"?> 
<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> 

apparire un altro errore. aiutami, ora sono fuori soluzione per questo

Infine, ho risolto il mio errore. È causato dalla mia eclissi (credo). Quando aggiungi la classe della biblioteca, appare automaticamente "google-play-services_lib.jar", non devi fare nulla. Reinstalla Eclipse e tutto funziona bene enter image description here

+0

basta selezionare il 'google-play-services_lib.jar', e rimuovere la libreria. –

+0

te per aiutarmi, ma penso che questo sia un errore su libs attach ed eclipse. ho provato un esempio online e ha lo stesso errore – Fido

+0

@Rahul Patel sono novizio in StackOverflow. come farlo? comunque, ho risolto il mio problema reinstallando eclipse e sdk. è il problema nelle librerie di importazione google-play-services_lib.jar – Fido

risposta

2

I volti anche questo tipo di problema, quando codifica prima volta per la mappa con API V2.

solo provare utilizzando la prolunga con FragmentActivity al posto del Activity

dovete copiare il progetto (goolge_play_services) nel vostro spazio di lavoro e poi collegarlo al vostro progetto. Nell'immagine sopra mostra la croce rossa, quindi selezionala e rimuovi e poi aggiungi ancora una volta la biblioteca con il progetto.

+1

ho cambiato da Activity a FragementActivity ma ancora crash e apparirà un altro errore – Fido

+0

si prega di installare 'Google Play services' nel vostro SDK manager.if non visibile quindi aggiornare i plugin ADT. –

0

devi copiare il progetto (goolge_play_services) nel tuo spazio di lavoro e quindi collegarlo al tuo progetto.

Quello che stai facendo è importare il progetto e non dare un segno di spunta alla copia del progetto nello spazio di lavoro a causa del quale mostra segni errati nelle librerie aggiunte.

Quindi basta selezionare la copia del progetto nello spazio di lavoro durante l'importazione del progetto google_play_services e quindi allegarlo al progetto.

+0

tks, ho importato al mio spazio di lavoro e farlo apparire un altro errore. Ho aggiornare l'errore nel primo posto, come posso risolvere il problema – Fido

+0

Controlla di aver aggiunto file jar compatibilità al progetto ed estendere la vostra attività con FragmentActivity – TNR

+0

ho cambiato, ma sembra un altro errore, ho aggiorno su prima inviare. mi potete aiutare – Fido

0

Come qui posso vedere che stai utilizzando l'API livello 8 e AFAIK i "Frammenti" sono supportati dal 11.

Così qui è necessario utilizzare la libreria compatibile dei frammenti.

Ed anche fare in modo di avere anche importati nella biblioteca del play-servizio di Google nel vostro spazio di lavoro e aggiunto nella vostra applicazione.

1

E 'necessario per utilizzare SupportMapFragment se API versione è inferiore a 11

  • Importante

    Non dimenticare di estendere la vostra attività con FragmentActivity

0

è necessario modificare il file AndroidManifest.xml dell'applicazione, e aggiungere la seguente dichiarazione all'interno dell'elemento. Questo include la versione dei servizi di Google Play con cui è stata compilata l'app.

<meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" />