Cambia l'attività iniziale dell'applicazione


386

Ho creato la carne e il fegato della mia applicazione, ma voglio aggiungere un'altra attività che sarà il punto di partenza (una specie di schermata di accesso).

Domande di coppia:

  • 1 Ho una discreta padronanza di come passare da un'attività all'altra (basato su questo articolo: http://www.linux-mag.com/id/7498 ) ma non sono sicuro di come crearne uno nuovo ( con eclissi) .

  • 2 Dopo aver creato una nuova attività, come posso impostarla come attività predefinita della mia applicazione? Presumo che potrei semplicemente cambiare il nome delle classi ... ma c'è un modo più elegante per gestirlo (forse all'interno del AndroidManifest.xml)?

Risposte:


660

Sì, si utilizza il AndroidManifest.xmlfile. In realtà puoi persino avere più di un'attività di avvio specificata nel manifest dell'applicazione. Per creare un'attività vista sul programma di avvio, aggiungi questi attributi all'attività nel manifest:

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

49
Per chiunque non sappia di cosa parla il manifest di questo post, è AndroidManifest.xml nella radice del tuo progetto. In Eclipse puoi fare doppio clic e fare clic sulla scheda all'estrema destra per modificare direttamente l'XML.
Austyn Mahoney,

3
grazie mille. Quindi, includendo quel nodo filtro intento con i suoi nodi figlio, ciò rende qualsiasi attività che è nella prima da caricare all'avvio dell'applicazione?
Kyle,

4
@Kyle farà apparire quell'attività nella pagina di avvio, puoi avere più attività con questo filtro intento che ti dà più icone sulla schermata iniziale.
Nathan Schwermann,

3
menzionate questa riga "In realtà è anche possibile specificare più di un'attività di avvio specificata nel manifest dell'applicazione". Quale attività verrà
avviata

48
Questa è la risposta corretta, ma ho notato qualcosa di strano: se si modifica l'attività di avvio in qualcos'altro e l'attività di avvio originale esiste ancora, l'SDK non sarà più in grado di avviare l'applicazione. In qualche modo ha un riferimento all'attività sulla configurazione di avvio. Quindi, dopo aver apportato la modifica sopra, devi anche andare su "Esegui"> "Configurazioni di debug", trovare il profilo di build del tuo progetto, la scheda "Android" e modificare l'attività avviata in quella predefinita o corretta in "Avvia :". Non sono sicuro del motivo per cui l'impostazione predefinita è stata deselezionata per me, ma la sua modifica ha funzionato.
zeh,

91

Vai su AndroidManifest.xml nella cartella principale del progetto e modifica il nome dell'attività che desideri eseguire per primo.

Esempio:

<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>

11
se con questo non funziona ancora in Android Studio devi fare clic sull'icona Android (quella con l'app per le parole) e selezionare "Modifica configurazioni", quindi nella scheda Generale, sezione Attività seleziona "Avvia attività predefinita"
Arma X

47

Se stai utilizzando Android Studio e potresti aver precedentemente selezionato un'altra attività da avviare.

Fare clic su Run > Edit configuratione assicurarsi che sia selezionata l' opzione Avvia attività predefinita .

Avvia attività predefinita


se in AndroidManifest.xml non esiste un filtro di intenti per il programma di avvio, questa è la soluzione.
Amir Fazwan,

1
Questo vale anche per Eclipse. Non è sufficiente specificare i filtri di intento. I filtri di intento vengono utilizzati se l'APK viene eseguito direttamente dall'utente, ma se l'APK viene eseguito da Eclipse, che lo installa, tenta di avviare un'attività specifica. Questa attività specifica è specificata in "Proprietà del progetto" (tasto destro del mouse sul progetto) -> Impostazioni Esegui / Debug.
Iker Jamardo Zugaza,

Questo è fantastico! Grazie per la punta
Rafael Oliveira,

30
 <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>

18

Seguire le istruzioni seguenti:

1 :) Apri il tuo AndroidManifest.xmlfile.

2 :) Vai al codice attività che desideri rendere la tua attività principale come di seguito.

come voglio fare SplashScreen come attività principale

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

3 :) Ora copia il codice seguente tra i tag attività come:

<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>

e verifica anche che le righe appena aggiunte non siano associate ad altri tag attività.


17

Questo è facile da aggiustare.

  • Le modifiche all'attività di avvio sono anche memorizzate nella configurazione di debug .
  • Vai a Run > Debug Configurationse modifica l'impostazione.
  • C'è anche un'impostazione simile in Intellij in Run > Edit ConfigurationsSeleziona Esegui attività predefinita e non salverà più l'impostazione in questo modo.

14

È semplice. Fallo nel tuo Manifestfile.

<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
dovresti rimuovere <categoria android: name = "android.intent.category.HOME" />
Behrouz.M

2
<category android:name="android.intent.category.DEFAULT" />, questa è la vera cosa che funziona qui
1111161171159459134

1
android.intent.category.HOMEè da utilizzare in un'applicazione in stile Kiosk, in cui viene sostituito il programma di avvio predefinito. L'uso di questo senza sostituire il Launcher comporterà un prompt durante l'avvio di SystemUI che chiede quale launcher utilizzare. Vedi anche: stackoverflow.com/questions/22911156/...
CJBS

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

5

Vai al tuo file AndroidManifest.xml e aggiungi come di seguito

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

quindi salva ed esegui il tuo progetto Android.


3

Aggiungete questo per avviare attività android:exported="true"nel file manifest come

 <activity
      android:name=".activities.activity.MainActivity"
      android:windowSoftInputMode="adjustPan"
      android:exported="true"/>
  <activity

Apri il file java di questa attività e fai clic con il pulsante destro del mouse, quindi fai clic su Esegui 'attività principale'

O

Apri il file java di questa attività e premi Ctrl+ Shift+ F10.


Che effetto ha questo? Solo il lancio?
Chia Yongkang,

2

In un recente progetto ho modificato l'attività predefinita in AndroidManifest.xml con:

<activity android:name=".MyAppRuntimePermissions">
</activity>

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

In Android Studio 3.6; questo sembra rotto. Ho usato questa tecnica in applicazioni di esempio, ma quando la utilizzo in questa applicazione del mondo reale cade piatta. L'IDE riporta ancora una volta:

Errore durante l'esecuzione dell'app: attività predefinita non trovata.

L'IDE mostrava ancora un errore di configurazione nello spazio "esegui app" nella barra degli strumenti (freccia gialla in questo screenshot)

Errore nella configurazione "esegui app"

Per correggere questo errore ho provato diverse ricostruzioni del progetto, e infine File >> "Cache / Riavvio non valido" . Questo non ha aiutato. Per eseguire l'applicazione ho dovuto "Modifica configurazioni" e puntare all'attività specifica anziché all'attività predefinita:

Finestra di dialogo Modifica configurazione

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.