28 votes

FragmentActivity causant ClassNotFoundException

J'ai juste utilisé Android SDK Manager pour mettre à jour le kit SDK d'Android Outils de révision 17, et Android Compatibilité de révision 7. Maintenant, le programme que j'ai été en cours d'exécution pour les âges se bloque au démarrage.

Circonscrire le problème, j'ai créé un nouveau projet, a ajouté android-support-v4.jar pour le build path, et a changé d'Activité pour FragmentActivity et c'est tout. Maintenant il se bloque.

Le message d'erreur est:

java.lang.ClassNotFoundException: com.example.test.TestActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.test-2.apk]

Le code est:

package com.example.test;

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

public class TestActivity extends FragmentActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Tout le reste, y compris le manifeste, est inchangé par rapport à la configuration par défaut. Toute aide est très appréciée!

Edit: Manifeste inclus ci-dessous:

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

    <uses-sdk android:minSdkVersion="9" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TestActivity"
            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>

27voto

Dave Points 572

Il s'avère que c'est un problème avec Android SDK Tools r17. J'avais déjà été à l'aide de la méthode indiquée dans le tutoriel:

http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/

Toutefois, cela ne fonctionne plus. Au lieu de cela, tout ce que j'avais à faire était de cliquez-droit sur mon projet dans Eclipse et choisissez Android Outils-->Ajout du Support de la Bibliothèque...

Faire cela signifie qu'il n'est plus nécessaire d'aller à Java Build Path et cliquez sur "Add External JARs..."

Un grand merci à eMich pour cette solution: Jar-file problème avec ADT r17

11voto

BornToCode Points 371

J'ai eu le même problème et aucune des réponses que j'ai trouvé dans stackoverflow a résolu mon problème. Après des heures de plusieurs (nombreux) essais et d'erreurs, j'ai résolu mon problème en configurant le chemin de génération de mon projet. Dans Eclipse, cliquez droit sur le projet > Build Path > Configure Build Path..., en Order and Export onglet, cochez Android Private Libraries, cliquez sur OK. Après cela, nettoyer le projet et essayer de l'exécuter à nouveau.

J'ai résolu ce problème en comparant mon projet avec d'autres (nouvellement créé), projet qui pourrait fonctionner comme prévu. J'ai comparé chacune des configurations et de la AndroidManifest.xml d'entre eux.

Espérons que cela vous aide aussi :)

Mise à JOUR d'Autre solution: à l'aide de ANT

J'ai trouvé une autre façon de résoudre ce problème: l'utilisation de ANT. Mon ami confronté à la même question, mais la fixation du chemin de génération n'a pas résolu son problème. Je ne sais pas si c'était parce que nous utilisons les différentes version IDE, différents ADT version, ou autre système d'exploitation (j'utilise GNU/Linux). Et puis, je lui a suggéré d'utiliser ANT plutôt que l'IDE est un.

D'abord, le programme d'installation du projet (créer build.xml) en exécutant android update project -p <project-dir> -n <project-name> pour chaque projet (y compris les projets de la bibliothèque). Et puis, à partir de la principale répertoire du projet, exécuter ant debug de construire, ant installd pour installer et exécuter l'application.

La chose étrange est, une fois qu'il a réussi de cette façon, il est même possible de compiler en utilisant l'IDE de nouveau, sans ANT à tous.

0voto

Davek804 Points 1542

Je suppose que l'activité du fragment est correctement répertoriée dans le manifeste? Voici ma principale classe FragmentActivity dans le manifeste:

     <activity android:name=".Polling" android:label="@string/app_name"
        android:windowSoftInputMode="stateHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
 

0voto

petey Points 5823

sélectionnez votre projet dans l'Explorateur de packages> Faites un clic droit dessus> Outils Android> Corriger les propriétés du projet et essayez également Projet> Nettoyer

Relancez ensuite.

0voto

hsigmond Points 1795

J'ai le

  java.lang.NoClassDefFoundError: com.android.example.SupportFragment
    at com.android.example.SupportFragmentActivity.onCreate()
 

sur PopupMenu

 SupportFragment extends SherlockFragment implements PopupMenu.OnMenuItemClickListener
...
    @Override
    public boolean onMenuItemClick(android.view.MenuItem item) {
        return onOptionsItemSelected(item);
    }
 

lorsque vous essayez de rendre une application api 17 compatible avec api 8, la seule indication était l'erreur logcat ci-dessus, alors vérifiez que toutes vos classes importées sont prises en charge si vous obtenez cette erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X