J'essayais d'exécuter un exemple de code Lors du lancement de l'application dans l'émulateur Android 1.5, j'ai eu ces erreurs ....
ERREUR de LogCat:
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.Android.test/com.s.Android.test.MainActivity}: Java.lang.ClassNotFoundException: com.s.Android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.Android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1544)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1638)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.access$1500(ActivityThread.Java:117)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:928)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.os.Handler.dispatchMessage(Handler.Java:99)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.os.Looper.loop(Looper.Java:123)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.main(ActivityThread.Java:3647)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.reflect.Method.invokeNative(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.reflect.Method.invoke(Method.Java:507)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:839)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:597)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.NativeStart.main(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: Java.lang.ClassNotFoundException: com.s.Android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.Android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.PathClassLoader.findClass(PathClassLoader.Java:240)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.ClassLoader.loadClass(ClassLoader.Java:551)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.Instrumentation.newActivity(Instrumentation.Java:1021)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1536)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): ... 11 more
01-13 02:28:08.407: WARN/ActivityManager(112): Force finishing activity com.s.Android.test/.MainActivity
Éditer Cette erreur arrive à la plupart des débutants, le fait est que vous devez ajouter toutes vos activités dans le fichier Manifest.
C'est un problème d'intention.
Veuillez ajouter votre Activity
dans votre AndroidManifest.xml
.
Lorsque vous souhaitez créer une nouvelle activité, vous devez l’inscrire dans votre AndroidManifest.xml
.
Dans mon cas, j'ai oublié d'ajouter la bibliothèque Google Maps
<application>
....
<uses-library Android:name="com.google.Android.maps" />
</application>
Vérifiez également que vous ne manquez pas le point précédent avant le chemin d'activité
<activity Android:name=".activities.MainActivity"/>
Vous essayez peut-être de trouver la vue avant onCreate()
qui est incorrecte.
public class MainActivity extends Activity {
ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
...
}
Il existe un autre moyen d’obtenir une Java.lang.RuntimeException: Impossible d’instancier l’activité ComponentInfo exception et l’activité que vous essayez de démarrer est abstract . J'ai fait cette erreur stupide une fois et il est très facile de l'ignorer.
Cela se produit également à cause de ce problème. J'ai décoché les bocaux qui devaient être exportés vers l'apk et la même chose s'est produite. Veuillez cocher les pots que votre application doit exécuter.
J'ai rencontré ce problème aussi, mais d'une manière légèrement différente. Voici mon scénario:
Détail de l'application:
<uses-library Android:name="com.google.Android.maps" />
dans les manifestes du projet de bibliothèque et de mon projet principal (cela peut ne pas être nécessaire dans la bibliothèque?)Cependant, j'ai toujours rencontré l'erreur décrite dans le message d'origine et je ne pouvais pas la faire disparaître. Le problème cependant était légèrement différent sur un point:
Comment j'ai résolu le problème:
Cette étape à elle seule n'a pas résolu le problème
Une fois que le fichier jar a été ajouté au chemin de génération, j'ai modifié l'ordre dans l'onglet de commande et d'export de Java> Chemin d'accès et exportation. ).
J'ai ensuite reconstruit et redéployé l'application sur mon appareil. Elle a fonctionné comme prévu lors d'une nouvelle installation. Juste pour être certain, je l'ai désinstallé à nouveau 2 ou 3 fois et réinstallé - j'ai quand même fonctionné comme prévu.
C'est peut-être une erreur totale de recrue, mais j'ai passé un bon bout de temps à fouiller dans les posts et mon code pour le comprendre, alors j'espère que cela pourra être utile à quelqu'un d'autre. Peut ne pas résoudre toutes les situations, mais dans ce cas particulier, cela a fini par être la solution à mon problème.
Cette erreur peut également être le signe ultime d'une erreur stupide (comme lorsque je - je veux dire, tousser, comme lorsqu'un ami à moi qui m'a montré son code une fois) où ils essaient d'exécuter du code en dehors d'une méthode telle que d'essayer de le faire :
SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc
@Override
public void onCreate(Bundle savedInstanceState) {
....
}
plutôt que cela:
SQLiteDatabase db;
@Override
public void onCreate(Bundle savedInstanceState) {
db = openOrCreateDatabase("DB", MODE_PRIVATE, null);
....
}
Cela peut ne pas être pertinent pour la question, mais dans mon cas, j'ai essayé d'implémenter Kotlin et laissé de côté apply plugin: 'kotlin-Android'
. L'erreur s'est produite car il ne pouvait pas reconnaître MainActivity dans un fichier .kt.
J'espère que ça aide quelqu'un.
Je me suis débarrassé de ce problème en supprimant les dossiers Bin
et Gen
du projet (qui reviennent automatiquement lorsque le projet sera créé), puis en nettoyant le projet de -> Menu -> Projet -> Nettoyer.
Merci.
Dans mon cas, je n'ai pas défini la setContentView(R.layout.main);
Si vous créez une nouvelle classe, n'essayez pas de la définir dans la méthode onCreate(Bundle savedInstanceState)
.
J'ai fait cette erreur stupide plusieurs fois.
Pour moi, ma chaîne de package dans AndroidManifest.xml
était incorrecte (copiée à partir d'un tutoriel) . Assurez-vous que la chaîne de package dans ce fichier est identique à celle où votre activité principale est, par exemple.
package="com.example.app"
Pour ce faire, ouvrez facilement le fichier AndroidManifest.xml dans l'onglet "Manifeste", puis tapez-le dans la zone de texte en regard de Package ou utilisez le bouton Parcourir.
De plus, la chaîne de package pour mon activité était incorrecte, par exemple.
<activity Android:name="com.example.app.MainActivity" Android:label="@string/app_name">
(Bêtement) j'ai eu la même erreur plusieurs semaines plus tard lorsque j'ai renommé mon nom de paquet. Si vous faites cela, assurez-vous de mettre à jour le fichier AndroidManifest.xml
également.
Nettoyez simplement votre projet ou redémarrez Eclipse. Puis lancez votre projet. ça va marcher.
Ok, je suis assez expérimenté sur l'iPhone mais nouveau pour Android. J'ai eu ce problème quand j'ai eu:
Button infoButton = (Button)findViewById(R.id.InfoButton);
cette ligne de code ci-dessus:
@Override
public void onCreate (Bundle savedInstanceState) {
}
Peut-être que je suis privé de sommeil: P
J'ai récemment rencontré cela avec une nouvelle réinstallation d'Eclipse. Il s'avère que mon niveau de conformité du compilateur a été défini sur Java 1.7 et que le projet est requis 1.6.
Dans Eclipse: Projet -> Propriétés -> Compilateur Java -> Conformité JDK
Cela peut arriver si votre classe d'activité est dans un package par défaut. Je l'ai corrigé en déplaçant la classe d'activité vers un nouveau package. et changer le fichier manifest.xml
avant
activity Android:name=".MainActivity"
après
activity Android:name="new_package.MainActivity"
Une autre raison de ce problème peut être une bibliothèque manquante.
Allez dans Propriétés -> Android et vérifiez que vous ajoutez les bibliothèques correctement
J'ai eu le même problème, mais mon activité a été déclarée dans le fichier Manifest, avec le nom correct.
Mon problème était que je n'avais pas besoin d'importer des bibliothèques tierces dans un dossier "libs" et que j'avais besoin de les référencer dans mon projet (clic droit, propriétés, chemin de construction Java, bibliothèques, Ajouter un fichier ...).
Vous avez ce problème et vous l'avez corrigé en définissant la propriété "Mode de lancement" de l'activité.
Comme suggéré par djjeck
dans le commentaire dans ceci réponse, j'ai omis de mettre le modificateur public
pour ma classe.
CA devrait etre
public class MyActivity extends AppCompatActivity {
Cela peut aider certains comme moi.
J'ai eu le même problème (impossible d'instancier l'activité):
PREMIÈRE raison:
J'accédais
Camera mCamera;
Camera.Parameters params = mCamera.getParameters();
avant
mCamera = Camera.open();
La bonne façon de faire est d’ouvrir la caméra d’abord, puis d’accéder aux paramètres.
DEUXIÈME raison: Déclarez votre activité dans le fichier manifeste
<activity Android:name=".activities.MainActivity"/>
TROISIÈME raison: Déclarez l’autorisation Caméra dans votre fichier manifeste.
<uses-feature Android:name="Android.hardware.Camera"></uses-feature>
<uses-permission Android:name="Android.permission.CAMERA" />
J'espère que cela t'aides
Dans mon cas, j'essayais d'intégrer le SDK Facebook et j'avais le mauvais ID d'application; ainsi l'erreur se produisait. Dans votre fichier manifeste, vous devriez avoir les métadonnées appropriées:
<meta-data
Android:name="com.facebook.sdk.ApplicationId"
Android:value="@string/facebook_app_id" />
Cette erreur se produit également lorsque vous utilisez ActionBarActivity
mais que vous attribuez un style non AppCompat
.
Pour résoudre ce problème, il suffit de définir le parent de style de vos applications sur un Theme.AppCompat
comme celui-ci:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
</style>
Faites un clic droit sur projet> Propriétés> Android> et essayez avec une version différente d'Android plus tôt je le faisais avec Android 4.4, puis j'ai changé pour Android 4.3 et cela a fonctionné!
Cela m’arrive assez souvent lorsqu’on utilise le NDK. J'ai trouvé qu'il est nécessaire que je fasse un "nettoyage" dans Eclipse après chaque fois que je fais un ndk-build
. J'espère que ça aide n'importe qui :)
J'ai essayé toutes les solutions ci-dessus mais rien ne fonctionne pour moi. après que je viens d’ajouter l’activité extend
au lieu de AppCompatActivity
et que je fonctionne bien.
utilisé
public class MainActivity extends Activity
au lieu de
public class MainActivity extends AppCompatActivity
je ne sais pas quel était le véritable problème.
Si vous avez Android Studio 2.3.3 et Android Studio 3.0.0 installé, le passage du développement à l’autre programme entraînera cette erreur. En effet, il existe des situations dans lesquelles les classes prises en charge dans un programme ne sont pas prises en charge par l’autre et inversement. Il est important de maintenir la cohérence dans la version d'Android Studio utilisée pour développer un projet.
Assurez-vous que toutes les activités de votre application sont correctement définies dans le fichier AndroidManifest.xml.
De plus, s’ils commencent par un chemin, assurez-vous que ce chemin existe.
Par exemple. cela ne fonctionnera pas:
<activity Android:name=".com.example.Android.networkusage.NetworkActivity" Android:label="@string/app_name" >
Si le nom de votre application est com.example.networkusage
(notez le .Android manquant.)
Ou mieux encore, n'incluez pas de chemins lors de la définition d'une activité dans le manifeste. Ne mettez que leur nom (avec un point devant).
<activity Android:name=".NetworkActivity" Android:label="@string/app_name" >
Parfois, isMinifyEnabled = false
peut aider (assurez-vous de nettoyer le projet avant de le lancer)
Votre nouvelle activité ajouter AndroidManifest.xml
comme ".NewActivity"
</activity>
<activity Android:name=".NewActivity" />
De même, si vous récupérez quelque chose de intent
d'une autre activité en utilisant getIntent
dans l'activité en cours et définissez les données extraites avant/au-dessus de onCreate
, cette exception est levée.
Pour par exemple. si je récupère une chaîne comme celle-ci
final String slot1 = getIntent().getExtras().getString("Slot1");
et mettez cette ligne de code avant/au-dessus de onCreate
, puis cette exception est levée.
Dans mon cas, j'avais deux versions de "Android-support-v4.jar" dans le projet. Après avoir résolu ce problème (référence supplémentaire/incorrecte supprimée), le problème a été résolu.
Dans mon cas, j'ai dû ajouter une nouvelle bibliothèque Android 6.0 en allant dans Fenêtre >> Préférences >> Java >> Chemin de construction >> Bibliothèques utilisateur >> Ajouter une bibliothèque >> Bibliothèque d'utilisateurs >> Nouveau
Nommez-le Android 6.0, puis cliquez sur OK. Après cela, ajoutez le fichier Android.jar que vous trouverez dans "sdklocation/plates-formes/Android-23/Android.jar".
Assurez-vous de faire tout cela dans le projet Android.
Cela m'est arrivé lorsque j'ai essayé d'exécuter une Activity
sur 2.2 utilisant des importations Honeycomb non disponibles dans les anciennes versions d'Android et non incluses dans le package de support v4.
Il suffit de cliquer sur le fichier et de fermer le projet et de le rouvrir
OR
lorsque vous l'ouvrez, nettoyez le projet puis exécutez-le, cela fonctionne pour moi .....
ce problème est dû à changer le nom du paquet de l'application, j'ai rencontré ce problème quand je n'ai pas de solution puis dans la colère je ferme le projet alors je pense que yaar pourquoi ne pas un autre essai .... alors mon travail de projet ...
Cela peut également arriver si vous avez deux projets avec le même nom de package et que vous avez exécuté l'un d'entre eux avant l'autre, je suppose donc que cela confond Eclipse. Pour moi, cela s'est produit lorsque j'ai copié un didacticiel Android dans Eclipse dans le même espace de travail tout en laissant les noms de package identiques, mais en y ajoutant ActionBarSherlock (ABS), par exemple.
package="com.example.Android.whatever"
Ainsi, dans mon fichier AndroidManifest.xml, le projet de didacticiel qui se trouvait dans mon espace de travail et le projet de didacticiel copié avaient tous deux comme chaîne de package:
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.Android.whatever"
....
</manifest>
Modifiez simplement le nom du paquet par refactoring (dans Eclipse, cliquez avec le bouton droit de la souris sur l’emballage dans l’onglet Explorateur de paquets> sélectionnez Réfracteur> sélectionnez Renommer ...) puis modifiez-le dans votre fichier AndroidManifest.xml et ailleurs .Java)
Dans mon cas, j'essayais d'initialiser les composants (UI) avant même que la onCreate
ne soit appelée pour l'activité.
Assurez-vous que vos composants d'interface utilisateur sont initialisés/liés dans la méthode onCreate
après setContentView
NB: Ceci est ma première erreur en apprenant la programmation Android.
La plupart du temps, si le nom Activity
a changé, cela a été reflété dans tout le projet, à l'exception du fichier AndroidManifest.xml
.
Il vous suffit d’ajouter le nom dans manifest
manuellement.
<activity
Android:name="Activity_Class_Name"
Android:label="@string/app_name">
</activity>
Ne fais pas comme ça
ImageView imageView=findViewById(R.id.imageView);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fais-le comme ça
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=findViewById(R.id.imageView);
vous pouvez avoir des erreurs dans vos domaines comme
public class Search_costumer extends Activity {
// you may have some errors like this
int x =3/0;
// I have error in initializing this variable too
MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
donc mon conseil est d'effectuer toute l'initialisation dans la méthode onCreate pas directement dans vos champs
résoudre comme ça
public class Search_costumer extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// you may have some errors like this
int x =3/0;
// I have error in initializing this variable too
MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener();
}
}