4

Je suis en train de créer une application simple Hello World pour en savoir plus sur le package de compatibilité Android. Je suis en mesure d'obtenir l'application à exécuter sur l'émulateur 3.2, mais quand je le lance sur un émulateur 2.3.3 Je reçoisImpossible de résoudre FragmentActivity fonctionnant sous Android 2.3.3 avec le package de compatibilité v4

10-12 11:36:14.474: WARN/dalvikvm(469): Unable to resolve superclass of Lcom/example/MyActivity; (11) 
10-12 11:36:14.564: WARN/dalvikvm(469): Link of class 'Lcom/example/MyActivity;' failed 
10-12 11:36:14.564: DEBUG/AndroidRuntime(469): Shutting down VM 
10-12 11:36:14.584: WARN/dalvikvm(469): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
10-12 11:36:14.624: ERROR/AndroidRuntime(469): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example/com.example.MyActivity}: java.lang.ClassNotFoundException: com.example.MyActivity in loader dalvik.system.PathClassLoader[/data/app/com.example-1.apk] 

Il ne peut évidemment pas trouver FragmentActivity (ce qui est super de com. exemple.MyActivity). Je ne sais pas pourquoi.

Quelques choses à noter:

1) Je suis en suivant les tutoriels à http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/ qui n'est pas très complet.

2) Je suis sûr que je suis en train de construire le paquet de compatibilité dans l'APK correctement avec maven. J'ai installé le pot dans mon référentiel maven local et j'en dépends pour compiler. Je pense que si je ne le construisais pas correctement, il ne fonctionnerait pas sur l'émulateur 3.2.

3) J'ai essayé de construire avec IntelliJ et le plugin maven-compiler-plugin. Même résultat

Toute aide serait grandement appréciée. Merci.

EDIT ... Voici le Manifest

<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

<application android:label="@string/app_name" android:icon="@drawable/icon"> 
    <activity android:name=".MyActivity" 
       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=".TutViewerActivity" 
       android:label="@string/app_name" > 
    </activity> 
</application> 
<uses-sdk android:minSdkVersion="7" /> 

et la MyActivity définition

public class MyActivity extends FragmentActivity implements TutListFragment.OnTutSelectedListener 

Répondre

4

J'ai eu le même problème, et le problème était le paquet de compatibilité n'a pas été être inclus correctement. L'exception est ambiguë, car elle indique qu'elle ne peut pas trouver MyActivity, mais la trace de pile complète affichera l'élément FragmentActivity qu'elle ne peut pas lier. Vérifiez la portée, et assurez-vous que la version correcte est dans votre référentiel, et il est en effet inclus au moment de la construction.

Si vous rencontrez toujours ce problème, essayez d'inclure votre fichier pom.xml ici.

+5

J'ai aussi eu le problème. J'ai trouvé votre commentaire, Dan, et je l'ai fait comme vous l'avez dit. Faites un clic droit sur le projet, Outils Android, Ajouter une bibliothèque de support. Avez-vous l'astuce! – Davek804

+0

Merci Davek804, je suis tellement énervé coz de ce problème depuis tant de jours maintenant. Ne sachez pas si l'équipe ADT a publié une déclaration officielle pour cette chose particulière !!! –

+0

Oui, regardez ceci [réponse] (http: // stackoverflow.com/questions/11764195/incapable-de-résoudre-super-classe-de-landroid-support-v4-app-fragmentactivity) ainsi. Les dépendances privées qui ne sont pas cochées dans le chemin de génération d'exportation peuvent être un problème possible. – asgs

1

J'ai eu le même problème, le package de compatibilité n'a pas été intégré dans l'apk correctement. Pour cela, vous pouvez utiliser les étapes suivantes:

De developer.android.com:

Pour ajouter l'une des bibliothèques à votre projet Android:

In your Android project, create a directory named libs at the root of your project (next to src/, res/, etc.) 
Locate the JAR file for the library you want to use and copy it into the libs/ directory. 

For example, the library that supports API level 4 and up is located at <sdk>/extras/android/support/v4/android-support-v4.jar. 
Add the JAR to your project build path. 

In Eclipse, right-click the JAR file in the Package Explorer, select Build Path > Add to Build Path. 
0

Ajouter les éléments suivants aux importations MyActivity:

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 

Même si vous n'utilisez pas ces classes s.

Questions connexes