Imansible risolvere la class MapActivity in Android

Ho un'applicazione che ha 11 diverse attività. Una di queste attività è un'estensione di MapActivity (è una mappa per la visualizzazione dei dati). Per raggiungere questa attività, l'utente deve prima viaggiare attraverso l'attività di lancio, quindi altre 3 attività. Il codice per avviare MapActivity è:

Intent i = new Intent(getBaseContext(), MapVis.class); i.putExtra("edu.uml.cs.isense.visualizations.session_list", sessions); startActivity(i); 

Quando questo viene eseguito otterò la seguente output dal Log:

  • Errore null nella connessione socket, Android
  • Aggiunta di bitmap di filigrana per video in android: MediaMuxer 4.3 o ffmpeg
  • Chiamare il file PHP in Java tramite URL
  • Quale è meglio usare Sencha Touch o phonegap per android?
  • Sorgente di installazione di Android
  • Imansible risolvere il simbolo "OnClickListener"
  •  09-01 14:36:22.389: WARN/dalvikvm(592): Class resolved by unexpected DEX: Ledu/uml/cs/isense/visualizations/MapVis;(0x44981910):0x128260 ref [Lcom/google/android/maps/MapActivity;] Lcom/google/android/maps/MapActivity;(0x44981910):0x13d330 09-01 14:36:22.389: WARN/dalvikvm(592): (Ledu/uml/cs/isense/visualizations/MapVis; had used a different Lcom/google/android/maps/MapActivity; during pre-verification) 09-01 14:36:22.389: WARN/dalvikvm(592): Unable to resolve superclass of Ledu/uml/cs/isense/visualizations/MapVis; (118) 09-01 14:36:22.389: WARN/dalvikvm(592): Link of class 'Ledu/uml/cs/isense/visualizations/MapVis;' failed 09-01 14:36:22.389: DEBUG/AndroidRuntime(592): Shutting down VM 09-01 14:36:22.389: WARN/dalvikvm(592): threadid=1: thread exiting with uncaught exception (group=0x4001d7f0) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): FATAL EXCEPTION: main 09-01 14:36:22.399: ERROR/AndroidRuntime(592): java.lang.NoClassDefFoundError: edu.uml.cs.isense.visualizations.MapVis 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at edu.uml.cs.isense.visualizations.Visualizations.onOptionsItemSelected(Visualizations.java:213) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at android.app.Activity.onMenuItemSelected(Activity.java:2195) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at android.view.View$PerformClick.run(View.java:8816) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at android.os.Handler.handleCallback(Handler.java:587) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at android.os.Handler.dispatchMessage(Handler.java:92) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at android.os.Looper.loop(Looper.java:123) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at android.app.ActivityThread.main(ActivityThread.java:4627) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at java.lang.reflect.Method.invokeNative(Native Method) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at java.lang.reflect.Method.invoke(Method.java:521) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at dalvik.system.NativeStart.main(Native Method) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at dalvik.system.DexFile.defineClass(Native Method) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:209) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 09-01 14:36:22.399: ERROR/AndroidRuntime(592): ... 17 more 09-01 14:36:22.409: WARN/ActivityManager(92): Force finishing activity edu.uml.cs.isense/.visualizations.Visualizations 09-01 14:36:22.909: WARN/ActivityManager(92): Activity pause timeout for HistoryRecord{44c84a90 edu.uml.cs.isense/.visualizations.Visualizations} 

    Ho l'objective impostato sulle API di Google, questa è un'applicazione destinata per Android 1.5 e specifica che il minsdk sia il livello 3 nel file manifesto. utilizza-libreria per le mappe è anche in file manifesto.

     <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="edu.uml.cs.isense" android:versionCode="1" android:versionName="1.0"> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Isense" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".experiments.Experiments" android:label="@string/app_name_experiments"/> <activity android:name=".sessions.Sessions" android:label="@string/app_name"/> <activity android:name=".people.People" android:label="@string/app_name_people"/> <activity android:name=".profile.Profile" android:label="@string/app_name"/> <activity android:name=".sensors.Sensors" android:label="@string/app_name_sensors"/> <activity android:name=".visualizations.DataTable" android:label="@string/app_name"/> <activity android:name=".visualizations.Visualizations" android:label="@string/app_name"/> <activity android:name=".sensors.DataListActivity" android:label="@string/selectFile" android:theme="@android:style/Theme.Dialog" android:configChanges="orientation|keyboardHidden" /> <activity android:name=".sensors.Upload" android:label="@string/app_name_uploader"/> <activity android:name=".visualizations.MapVis" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar" /> <uses-library android:name="com.google.android.maps"/> </application> <uses-sdk android:minSdkVersion="3"/> </manifest> 

    Sono stato a questo per quasi 2 giorni senza risultati. Sembra che ci siano molte persone che hanno problemi a lanciare una MapActivity da altre attività, ma non ci sono soluzioni in nessuna parte. Qualcuno ha un indizio? Grazie.

    12 Solutions collect form web for “Imansible risolvere la class MapActivity in Android”

    Il problema è che la class di MapVis probabilmente estende com.google.android.maps.MapActivity . Perché il sistema sia in grado di trovare questa class, bisogna fare due cose:

    In primo luogo, assicurati che il tuo progetto includa maps.jar di Android nel tuo path di creazione. Da Eclipse trova

     Project > Properties > Android 

    Quindi select una delle "API di Google" come appropriato per l'applicazione. Puoi confermare che maps.jar è sul tuo path di creazione controllando:

     Project > Properties > Java Build Path > Libraries > Expand "Google Apis" 

    In secondo luogo, esplorare il file manifesto e assicurarsi di avere lo snippet della uses-library nidificata nei tag <application> come segue:

     <manifest> ... <application ...> <uses-library android:name="com.google.android.maps" /> ... </application> </manifest> 

    Che la forza sia con te!

    A quanto pare a un certo punto il mio ambiente di costruzione è stato davvero messo in su. Sembrava che in qualche modo avevo il vasetto di Google API nel mio progetto due volte, causando un conflitto. Ho cancellato il progetto e l'ho ricreata, funziona ora.

    Ho avuto questo stesso problema.

    Ho aggiunto manualmente il maps.jar nel path di generazione e utilizzando Android 2.1 come destinazione. Questo non sembra funzionare (non in 2.1 comunque) nonostante il tutorial che ho seguito dicendo di farlo così.

    Come ho risolto è stato:

    -Trova il maps.jar aggiunto manualmente, quindi imposta il mio target di generazione a API 2.1 di Google invece di Android 2.1

    Mi sono reso conto dopo che il maps.jar è automaticamente incluso nei libs di Google "Google" così è stato in conflitto. : D

    Ho aggiornato la risposta di cyber-monk perché il problema non è che non hai maps.jar, il problema è che hai un vasetto in conflitto (ad esempio, si mescola maps.jar con android 4.0). Così

    1. assicurati che le API di Google siano selezionate in Project > Properties > Android . Se non lo seleziona, clicca su Applica. Questa modifica modificherà la properties; di destinazione nel file project.properties e modificare le librerie incluse . (ad esempio con l'ultima versione di android sdk, avrai: target=Google Inc.:Google APIs:14 )
    2. vai a Project > Properties > Java Build Path > Libraries e accertati che non sia incluso android.jar o maps.jar . Devi solo avere Google Apis con alless maps.jar e android.jar come foglie.

    Per coloro che utilizzano Android studio e gradle:

    1. Rimuovi completamente le maps.jar (e tutte le altre libs aggiunte per le mappe google) dalle dependencies.
    2. Nei tuoi progetti manifesti e nella tua libreria di mappe (se si utilizza uno) aggiungere questa row nella sezione "applicazione":

      <usa-libreria android: name = "com.google.android.maps" />

    3. Nei file build.gradle dei progetti (e anche in gradi della libreria delle mappe se si utilizza uno) modifica compileSdkVersion:

      compileSdkVersion "Google Inc.:Google API: 19"

    4. Pulire e ribuild il tuo progetto.

    Ho avuto lo stesso problema e ho capito che non puoi solo aggiungere la libreria di mappe al progetto, devi cambiare l'objective a qualcosa di simile a questo target=Google Inc.:Google APIs:8 invece di android=android-8 .

    Comunque grazie mi hai dato il suggerimento per scoprirlo;)

    prova questo:

    sul tuo Android .jar fare clic destro su Costruire Path-> Configure Build Path. allora se vedi 2 maps.jar include rimuove uno di essi …

    La risposta di John ha funzionato per me. Ci sono voluti per sempre trovare questa soluzione. Una grande pagina per lavorare con MapActivity è qui . Copre la maggior parte dei problemi incontrati quando si lavora con essa, inclusa la soluzione John aveva.

    Ho avuto lo stesso problema e ho provato tutte le soluzioni proposte sopra (tranne la ricostruzione del progetto) senza successo. Poi ho pulito il progetto ed è stato fissato. In Eclipse Project> Pulisci il tuo progetto e seleziona ok.

    nel mio caso si è scoperto che il maps.jar era anche seduto nella mia directory libs. Rimuoverlo da questo ha risolto il problema.

    @ monaco di cyber-monaco (dispiace, non può commentare ancora le risposte) la risposta è simile a each altra risposta su internet, tranne che mostra un dettaglio molto importnte che la maggior parte lascia fuori. Devi mettere il tag all'interno del tag. Più semplicemente diciamo di metterlo nel manifesto senza dire where metterlo. L'ho messo dentro e alla fine, finalmente ho fatto funzionare

    Un altro motivo più probabile che si è rivelato è stato il fatto che c'erano libs confliggenti, in modo da risultare in quei problemi ClassLoading, è bene rimuovere gli altri libs inutili. Se hai incluso le mappe google lib come suggerito dai contributori precedenti, fai rimuoverli, in modo che il tuo progetto ora abbia come segue.

    immettere qui la descrizione dell'immagine

    immettere qui la descrizione dell'immagine

    Un'altra ansible causa è la dichiarazione del pacchetto sul tuo manifesto. immettere qui la descrizione dell'immagine

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.