2010-09-02 6 views
274

J'ai créé la chair et les tripes de mon application mais je souhaite ajouter une activité différente qui sera le point de départ (sorte d'écran de connexion).Modifier l'activité de démarrage de l'application

questions Couple:

  • 1 J'ai une poignée assez bonne sur la façon de passer entre les activités (en fonction de cet article: http://www.linux-mag.com/id/7498) mais je ne suis pas sûr comment s'y prendre pour créer un nouveau (avec éclipse).

  • 2 Une fois qu'une nouvelle activité est créée, comment puis-je la définir comme activité par défaut de mon application? Je présume que je pourrais juste changer le nom des classes ... mais y at-il une manière plus élégante de manipuler cela (peut-être dans le AndroidManifest.xml)?

Répondre

487

Oui, vous utilisez le fichier AndroidManifest.xml. Vous pouvez même avoir plus d'une activité de lancement spécifiée dans votre manifeste d'application. Pour une activité vu sur le lanceur que vous ajoutez ces attributs à votre activité dans le manifeste:

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

Pour quiconque ne sait pas de quoi le manifeste parle de ce message, il s'agit du AndroidManifest.xml à la racine de votre projet. Dans Eclipse, vous pouvez double-cliquer dessus et cliquer sur l'onglet le plus à droite pour éditer le XML directement. –

+3

merci beaucoup. Donc, en incluant ce noeud de filtre d'intention avec ses nœuds enfants, cela fait que l'activité est dans le premier à charger quand l'application démarre? – Kyle

+4

@Kyle il fera apparaître cette activité sur la page du lanceur, vous pouvez avoir plusieurs activités avec ce filtre d'intention en vous donnant plusieurs icônes sur l'écran d'accueil. – schwiz

63

Aller à AndroidManifest.xml dans le dossier racine de votre projet et changer le nom de l'activité que vous souhaitez exécuter en premier.

Exemple:

<activity android:name=".put your started activity name here" 
      android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
+10

Si cela ne fonctionne toujours pas dans Android Studio vous devez cliquer sur l'icône android (celle avec le mot application) et sélectionnez "Modifier les configurations", puis dans l'onglet Général, section Activité sélectionnez "Lancer l'activité par défaut" –

23
<application 
    android:icon="@drawable/YOUR_ICON" <!-- THIS ICON(IMAGE) WILL BE SHOWN IN YOUR APPS --> 
    android:label="MY APP NAME " > <!-- HERE LABEL(APP NAME) --> 
    <activity 
     android:name=".application's starting activity" <!-- (.)dot means current dir, if your activity is in another package then give full package name ex: com.xxx.Activity --> 
     android:label="LABEL FOR ACTIVITY " 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
8

Il est simple. Pour ce faire, dans votre fichier Manifest.

<activity 
    android:name="Your app name" 
    android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.HOME" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
</activity> 
+1

vous devriez enlever

+1

'', c'est la chose même qui fonctionne ici – 1111161171159459134

+1

'android.intent.category.HOME' est à utiliser dans une application de style en mode Kiosque, où le lanceur par défaut est remplacé. L'utiliser sans remplacer le Launcher entraînera une invite au démarrage de SystemUI demandant quel lanceur utiliser. Voir aussi: http://stackoverflow.com/questions/22911156/android-open-source-setting-the-default-launcher – CJBS

12

Ceci est facile à réparer.

  • Les modifications apportées à l'activité de lancement sont également stockés dans la configuration de débogage.
  • Passez au Run > Debug Configurations et modifiez le paramètre.
  • Il y a aussi un cadre similaire dans Intellij sous Run > Edit Configurations sélectionnez Exécuter Activité par défaut et il ne sera plus enregistrer le réglage de cette façon.
3

Il suffit d'aller à votre fichier AndroidManifest.xml et ajouter comme ci-dessous

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

puis enregistrez et exécutez votre projet Android.

37

Si vous utilisez Android Studio et que vous avez précédemment sélectionné une autre activité pour le lancer.

Cliquez sur Run > Edit configuration puis assurez-vous que Lancer l'activité par défaut est sélectionné.

Launch default Activity

+0

Si dans AndroidManifest.xml il n'y a pas de filtre d'intention pour le lanceur, ceci est la solution. –

+0

@AmirFazwan Non, vous pouvez toujours modifier le manifeste –

+0

Cela s'applique également à Eclipse. Il ne suffit pas de spécifier les filtres d'intention. Les filtres d'intention sont utilisés si le fichier APK est exécuté directement par l'utilisateur, mais si le fichier APK est exécuté par Eclipse qui l'installe, il tente de lancer une activité spécifique. Cette activité spécifique est spécifiée dans "Propriétés du projet" (clic droit sur le projet) -> Paramètres d'exécution/de débogage. –

11

Suivez les instructions ci-après:

1 :) Ouvrez votre fichier AndroidManifest.xml.

2 :) Accédez au code d'activité pour lequel vous souhaitez créer votre activité principale, comme ci-dessous.

tels que je veux faire SplashScreen comme activité principale

<activity 
    android:name=".SplashScreen" 
    android:screenOrientation="sensorPortrait" 
    android:label="City Retails"> 
</activity> 

3 :) Maintenant, copiez le code ci-dessous entre les balises d'activité identique:

<activity 
    android:name=".SplashScreen" 
    android:screenOrientation="sensorPortrait" 
    android:label="City Retails"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

et aussi vérifier que les nouveaux les lignes ajoutées ne sont pas attachées à d'autres étiquettes d'activité.