2009-12-24 5 views
0

Je confirme la création d'une activité.Trop d'activités démarrées lors du lancement d'une application Android

Mon Manifest.xml est comme ceci:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".FirstActivity" 
      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=".SecondActivity" 
      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=".ThirdActivity" 
      android:label="@string/app_name"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Vous pouvez voir la propriété action android:name= propriété est "android.intent.action.MAIN" et category android:name= est "android.intent.category.LAUNCHER" pour toutes les activités.

Lorsque l'application démarre, elle appelle FirstActivity.

Puis appelle une activité inutile telle que ThirdActivity ou SecondActivity.

Dans ce cas, mon manifest.xml est-il correct?

Ou dois-je définir une autre propriété pour les deuxième et troisième activités? Si oui, qu'est-ce que c'est? Je me demande manifest.xml fichier est bon pour mon cas.

Veuillez nous aviser.

Merci d'avance.

Répondre

2

Essayez cette config:

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".FirstActivity" 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=".SecondActivity" android:label="@string/app_name"> 
    <intent-filter> 
    </intent-filter> 
</activity> 
<activity android:name=".ThirdActivity" android:label="@string/app_name"> 
    <intent-filter> 
    </intent-filter> 
</activity> 
+0

Ok. Merci. Est-ce que les deuxième et troisième activités ressemblent à une activité d'enfant? – AndroiDBeginner

+0

Oui, vous pouvez les démarrer en utilisant Intents. – alex2k8

1

Pensez à un Intent comme message utilisé pour démarrer une Activity faire quelque chose. Donc, je peux créer un Intent pour afficher une page Web et une application avec une activité qui sait comment afficher une page Web - probablement le navigateur - peut intercepter son intention comme agir dessus.

Vous dites à Android quelles activités peuvent agir sur quelles intentions en utilisant la partie <intent-filter> de votre manifeste. Le MAINIntent est un modèle spécial. Ceci est envoyé à une application quand il est lancé et, fondamentalement, il dit "Go!" Donc le Activity qui doit être affiché en premier doit intercepter ceci en ayant un <intent-filter> correctement défini.

Comme vous aviez les trois activités avec MAIN dans leur filtre, ils ont tous répondu à la demande de démarrage de votre application. Donc, vous devriez avoir ce <intent-filter> seulement pour FirstActivity.

+0

Wow, merci pour votre poste très détaillé. Je l'ai. – AndroiDBeginner

1

L'un des autres problèmes avec l'utilisation <category android:name="android.intent.category.LAUNCHER" /> pour plus d'une activité est que le menu de lancement du téléphone affichera plus d'une icône ...

De la documentation:

CATEGORY_LAUNCHER L'activité peut être l'activité initiale d'une tâche et est répertoriée dans l'application de niveau supérieur lanceur.

Questions connexes