Activité par défaut introuvable dans Android Studio


93

Je viens de passer à Android Studio 0.2.8 et j'obtiens un message d'erreur indiquant "Activité par défaut introuvable" lorsque j'essaie de modifier les configurations d'exécution.

Lorsque je lance Android Studio, j'obtiens le message d'erreur "L'accès est autorisé à partir du fil de distribution d'événements uniquement"

L'activité que j'utilise est une activité fragmentaire.

Jusqu'à présent, j'ai essayé de reconstruire et d'invalider les caches / redémarrer. Les deux n'étaient d'aucune utilité.

Veuillez me faire savoir ce que je peux faire pour résoudre le problème.


Réponses:


45

Dans Android Studio, faites un clic droit sur le projet et choisissez Ouvrir les paramètres du module . Ensuite, allez dans l' onglet Sources de votre module, trouvez le dossier src , faites un clic droit dessus et marquez-le comme Sources (couleur bleue).

EDIT: Il n'y a pas d'onglet sources dans les versions ultérieures d'Android Studio, mais vous pouvez modifier le fichier build.gradle à la place: https://stackoverflow.com/a/22028681/1101730 (merci pour le commentaire Josh)


27
Comment pourrais-je faire cela en 0.6.1 ? Je ne vois pas d' onglet Sources .
lschlessinger

7
moi non plus. Il y a des propriétés, des signatures, des saveurs, des types de construction et des dépendances
Junior Mayhé

4
Je n'avais pas d'onglet "Sources", j'ai donc modifié le fichier build.gradle à la place: stackoverflow.com/a/22028681
Josh

2
Parfait! Merci d'avoir aidé @Micer. Les gars, dans votre projet IntelliJ, appuyez sur 'F4', puis vous avez trois onglets (Sources, Chemins, Dépendances), allez dans l'onglet 'Sources' et vérifiez si le dossier 'src' (dans l'arborescence) est bleu. Sinon, appuyez sur 'Alt + S' pour inclure le dossier source dans la structure du projet.
Ryan Amaral

1
@IgorGanapolsky Vous avez raison, il semble que l'onglet Sources a été supprimé dans les versions ultérieures d'Android Studio. Vérifiez la réponse de Josh.
Micer

51

Avez-vous ajouté un ACTION_MAINfiltre d'intention à votre activité principale? Si vous n'ajoutez pas cela, Android ne saura pas quelle activité lancer comme activité principale.

ex:

<intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <action android:name="com.package.name.MyActivity"/>
      <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

1
Oui, c'est fait. J'ai corrigé le "L'accès est autorisé à partir du thread de répartition des événements uniquement" en utilisant oracle JDK au lieu de openJDK. L'activité par défaut manquante persiste cependant
Vipassana Vijayarangan

5
De plus, le nom "com.package.name.MyActivity"peut être omis si tout l' <intent-filter>élément est à l'intérieur d'un <activity>élément qui correspond à votre MyActivity dans votre espace de noms.
Xavi Montero

Hah, j'ai renommé une classe nommée Filterincluant toutes les variables nommées filteret apparemment Android Studio a décidé d'inclure AndroidManifest.xmlet <intent-*filter*>. Cette réponse a fait ma double vérification AndroidManifest.xmlet m'a aidé à trouver le bogue =)
Stephan Henningsen

Où est-ce même documenté? Je ne peux pas le trouver…
mirabilos

32

J'ai eu le même problème lors de l'importation d'un projet dans Android Studio, probablement dû au fait que le projet a été développé sur une version antérieure d'Android Studio à celle actuellement installée sur mon ordinateur.

Ce qui l'a résolu, c'était simplement de choisir:

File -> Invalidate Caches / Restart...

puis en sélectionnant Invalidate and Restart.


1
Merci beaucoup @syntagma, vos conseils ont résolu mon problème après des heures d'efforts.
MMG

16

Si vous n'avez pas l'onglet et que vous avez commencé avec une activité vide, essayez ceci. Voici un exemple de code:

<application android:label="@string/app_name">

    <activity android:name=".HelloActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

</application>

Accédez maintenant à votre fichier AndroidManifest.xml. Copiez ensuite le filtre d'intention de ce code. Regardez votre fichier manifeste vraiment bien et collez le filtre d'intention à l'endroit exact où il se trouve dans le code ci-dessus. (après la partie .yourActivityName> du manifeste.) J'espère que cela a aidé.


13

Si vous obtenez toujours une erreur indiquant «Activité par défaut introuvable» lorsque vous essayez de modifier les configurations d'exécution même après l'exécution:

Invalidez le cache et redémarrez .

Essayez ensuite de supprimer le dossier Paramètres / Préférences:

/< USER_HOME_DIR >/.AndroidStudioPreview3.2

ou sur Mac:

/Users/<USER_NAME>/Library/Preferences/.AndroidStudioPreview3.2

Si vous avez renommé vos packages ou si vous avez changé de branche depuis votre contrôle de version, il arrive qu'Android Studio ne reconnaisse pas tous les fichiers et gâche les choses. La seule solution qui a fonctionné pour moi est de fermer AS, puis de supprimer .AndroidStudioXY (où XY est votre numéro de version), ce que @ Phileo99 a souligné.
Zbarcea Christian

1
Tu m'as sauvé la vie! Faites simplement ceci / <USER_HOME_DIR> /. AndroidStudioPreview3.2
nadafafif

vous êtes les bienvenus @nadafafif! s'il vous plaît voter pour ma réponse si cela vous a aidé.
Phileo99

@ Phileo99 Déjà fait ça. Je ne pouvais pas m'empêcher de le faire. :) À votre santé. Continuez à aider comme ça.
nadafafif

Cela a aidé, mais sachez que vous allez télécharger beaucoup de choses. Il a fallu environ 15 minutes pour télécharger
Valgaal

10

Lorsque j'ai cliqué sur "Ouvrir les paramètres du module", il n'y avait pas d'onglet "Source" , je pense que cela a été supprimé pour les nouvelles versions d'Android Studio (je suis sur 0.8.14). J'ai donc dû faire ceci à la place:

Ajoutez ces lignes au build.gradlefichier à l'intérieur du android { ... }bloc:

android { ... sourceSets { main.java.srcDirs += 'src/main/<YOUR DIRECTORY>' } }

Après avoir modifié le fichier, cliquez sur Outils> Android> Synchroniser le projet avec les fichiers Gradle .

Crédit à cette réponse et à ce commentaire .


9

La suite a fait l'affaire pour moi. À partir de Exécuter -> Modifier la configuration .

entrez la description de l'image ici


Je déconseillerais cette solution car elle faisait que l'application ne figurait plus dans la liste des applications disponibles sur le Samsung Galaxy S5 Neo et le Samsung Galaxy S6.
Teun Kooijman

3

Mon problème se résumait à une erreur supplémentaire qui apparaissait parfois, indiquant

Manifest Merger failed with multiple errors in Android Studio

Ce qui a finalement causé mon problème était le fait qu'il y avait plusieurs manifestes (un manifeste de débogage et un manifeste dans le nouveau module que je venais d'importer), et ils ne fusionnaient pas correctement à cause de cela. Après avoir vu cette réponse , j'ai pu analyser le manifeste fusionné et trouver la cause du problème et le résoudre.


2

cela m'est arrivé parce que j'ai capitalisé les chemins dans le manifeste. modifié:

<intent-filter>
    <action android:name="ANDROID.INTENT.ACTION.MAIN"/>
    <category android:name="ANDROID.INTENT.CATEGORY.LAUNCHER"/>
</intent-filter>

à

<intent-filter>
  <action android:name="android.intent.action.MAIN"/>
  <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

et c'était réparé


Tu as sauvé ma journée! Merci
Siva Kumar

2

J'ai rencontré le même problème aujourd'hui et je passais en revue les réponses ici.

Pour moi, la différence était qu'hier, cela fonctionnait bien, donc j'ai pensé que cela ne pouvait pas vraiment être un problème de configuration, ni la configuration ni la version d'Android Studio n'ont changé.

Heureusement, j'ai essayé de redémarrer Android Studio avant d'essayer l'une des autres réponses, et heureusement, cela a résolu le problème.

Donc, pour toutes les personnes qui rencontrent ceci: la première chose à essayer est de redémarrer Android Studio et seulement si cela ne résout pas le problème, essayez les autres réponses ici.


2

Je viens de rencontrer la même erreur dans Android Studio 1.5.1. et vient de trouver la source du problème. Je ne sais pas si la cause était une erreur humaine ou un étrange problème dans le comportement de l'EDI, mais aucune des questions StackOverflow existantes sur ce sujet ne semblait montrer quoi que ce soit à ce sujet, alors j'ai pensé que je la postais quand même comme une réponse.

Pour moi, l'un des membres de mon équipe ou l'EDI lui-même avait modifié l'entrée du manifeste des activités du lanceur, la faisant ressembler à ceci:

        <activity
            android:name="com.rhaebus.ui.activities.ActivitySplash"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <id android:name="android.intent.id.LAUNCHER" />
            </intent-filter>
        </activity>

Alors que cela devrait, en fait, ressembler à ceci:

        <activity android:name="com.rhaebus.ui.activities.ActivitySplash"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" /> <!-- Change Here -->
            </intent-filter>
        </activity>

Veuillez donc doubler, tripler, quadrupler le format de votre activité de lanceur dans le manifeste et vous pourrez peut-être gagner du temps.

J'espère que cela t'aides.

EDIT: Je suggère fortement aux gens de ne pas aller avec les réponses qui suggèrent de sélectionner manuellement une activité de lanceur dans les options de configuration de votre module, car cela a empêché l'application de s'afficher dans la liste des applications installées sur le Samsung Galaxy S5. Neo et le Samsung Galaxy S6 (du moins pour moi).


2

entrez la description de l'image ici

Appuyez sur l' application -> Modifier les configurations
Après cette modification de la valeur dans Lancer sur "Rien"


1

Veuillez vous assurer dans le manifeste que le nom du package est identique à votre activité principale


1
  1. Dans Android Studio, passez à la perspective Projet (pas à la perspective Android).

  2. Assurez-vous que votre projet suit la structure par défaut du plugin gradle (ie project_dir / app / src / main / java ... )

  3. Supprimer tous les construire dossiers et sous - dossiers que vous voyez.

  4. Dans la barre d'outils, cliquez sur Build -> Clean Project , puis sur Build -> Rebuild Project .

  5. Essayez d'exécuter le projet.


1

Vous pouvez empêcher Android Studio de se plaindre en allant dans le menu "Modifier les configurations" (appuyez trois fois sur "Shift", tapez "Edit Configurations"), puis changez Options de lancement> Lancer sur "Rien".

J'ajouterai probablement une activité générique contenant des instructions, histoire d'éviter toute confusion.


Cela a sauvé mon temps
Sayali

1

Dans mon cas, cela a fonctionné lorsque j'ai supprimé le dossier .idea du projet (Project / .ida) et rouvert Android Studio.


La suppression du dossier .idea m'a aidé dans mon cas, merci! Pour clarification, tous les fichiers avec l'extension ".iml" se trouvaient dans le dossier .idea. Veuillez NE PAS supprimer uniquement les fichiers .iml car cela peut entraîner d'autres erreurs!
Cordis Audax Agrinova le

0
  1. Cliquez avec le bouton droit sur le projet et choisissez Ouvrir les paramètres du module.
  2. Accédez à l'onglet Sources de votre module.
  3. Trouvez votre dossier src.
  4. Faites un clic droit dessus et marquez-le comme Sources.

Cela a résolu l'erreur dans mon cas.


0

Si vous avez changé le nom des répertoires (structure de classe), par exemple com.dir.sample en com.dir.sample1, n'oubliez pas de changer le package com.dir.sample en com.dir.sample1.


0

Modifiez "Workspace.xml" (appuyez sur Ctrl + Shft + R pour le rechercher)

  1. Modifiez le nom de l'activité avec le nom du package

  2. Assurez-vous de remplacer "name =" USE_COMMAND_LINE "par value =" false "

  3. Recharger le projet

Terminé!


Je chercherais avec Ctrl + Shft + F, + R = remplacer où F = trouver.
Shishdem

0

Pour ceux comme moi qui avaient du mal à trouver l'onglet "Sources":

entrez la description de l'image ici

Ici, vous devez marquer votre dossier "src" en bleu (cliquez d'abord dans Marquer comme: Source , puis dans votre dossier src ), et vous êtes prêt à partir.


0

Vous pouvez suivre deux étapes:

  1. Accédez aux configurations et saisissez le nom de l'activité à lancer
  2. S'il ne fonctionne toujours pas, désactivez Instant Run

0

J'ai essayé toutes les solutions, mais je ne fonctionne pas du tout. que j'ai essayé de désactiver l'exécution instantanée dans mon studio Android.

Accédez aux paramètres ou aux préférences d'Android Studio (pour MAC) -> Build, Execution, Deployment -> Instant Run .

décochez la fonctionnalité d'exécution instantanée et ensuite cliquez sur le projet de synchronisation avec les fichiers gradle du menu fichier

maintenant lancez votre build ...


Ce n'est plus valable pour Android Studio 4.0+
Jorge E. Hernández

0

Dans certains cas, vous pouvez avoir un modèle avec un categorychamp, si vous le refactorisez à tous les endroits, il peut le refactoriser dans un fichier manifeste, puis la balise xml deviendra invalide.


0

De nombreuses possibilités peuvent se présenter pour ce genre de cas (Activité par défaut non trouvée) Si tout le code va bien, en particulier sur Manifest, il suffit juste d'invalider le cache et de redémarrer le studio,

Mais parfois, cela se produit lorsque vous avez une déclaration d'activité en double sur le manifeste, non seulement pour l'activité principale, mais également déclenchée par les activités enfants.

Cela s'est produit avec moi, activité par défaut introuvable car j'ai des activités enfant de duplication sur le manifeste, après avoir supprimé cela, tout va bien



0

Je l'ai compris. J'ai ajouté par erreur le mot-clé final dans la déclaration d'activité. Une fois que je l'ai supprimé, tout fonctionne!

public  class SplashActivity extends AppCompatActivity {
...
}

-1
  1. Dans Android Studio

  2. Allez à modifier la configuration.

  3. Sélectionnez l'appli.

  4. choisissez le chemin de l'activité du déjeuner.

  5. appliquer, OK.

    Merci!!


-1

Le nom de l'activité par défaut a changé (comme SplashActivity -> SplashActivity1) et fonctionne pour moi

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.