2011-07-11 6 views
10

sappiamo che ci sono flag che possiamo aggiungere al nostro intento usando il metodo addFlags() nel nostro codice java. C'è un modo in cui possiamo aggiungere questi flag nel file manifest stesso invece di scrivere questo nel codice java. Devo aggiungere il flag REORDER_TO_FRONT per una delle mie attività nel manifest.Come aggiungere i flag con il mio intento nel file manifest

Come raggiungere questo obiettivo?

risposta

6

Nel file manifest non è possibile aggiungere i flag di Intenti. È necessario impostare il flag in Intent che si passa a startActivity. Ecco un esempio:

Intent intent = new Intent(this, ActivityNameToLaunch.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 
+7

Ciao Richie, sì, so questa cosa, ma il problema è che non sto lanciando esplicitamente questa attività da un'altra attività. Nel mio caso l'attività da avviare è il principale/launcher e si intende iniziare quando l'utente chiude altre attività premendo il pulsante Indietro e infine arriva a questa schermata (che è anche la schermata iniziale) – Ankit

3

Per rispondere alla domanda iniziale, dal momento che questo appare come la prima risposta nella ricerca di google, si può fare, in quanto livello di API 3 (introdotto nel 2009), con l'aggiunta di android:noHistory="true" all'attività definizione nel file manifest come descritto qui: http://developer.android.com/guide/topics/manifest/activity-element.html#nohist.

esempio:

<activity 
    android:name=".MainActivity" 
    android:label="@string/app_name" 
    android:noHistory="true"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN"/> 
     <category android:name="android.intent.cataegory.LAUNCHER"/> 
    </intent-filter> 
</activity> 
2

Ho avuto un problema simile e volevano impostare i flag

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK 

al fine di portare l'attività sempre al top.

In questo scenario, la soluzione è quella di impostare l'attributo

android:launchMode="singleInstance" 

nel manifesto.

In generale, ci sono molti attributi nel manifest di Android per un'attività, e puoi giocarci con questi per ottenere effetti simili a quelli con le bandiere.

+0

Suggerimento eccellente, grazie! Invece di limitarsi a "giocare" si potrebbe anche voler controllare la documentazione dell'elemento : https://developer.android.com/guide/topics/manifest/activity-element.html – Robin

0

Si può facilmente raggiungere questo obiettivo con l'utilizzo android:launchMode="singleTop" nel nodo <activity> di manifesti, in questo modo: l'opzione

<activity 
    android:name=".ui.activities.MainActivity" 
    android:launchMode="singleTop"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

nota, che android:launchMode="singleInstance" come è dato da @ Jörg-Eisfeld non è raccomandato per l'uso generale, come indicato nella documentazione ufficiale: https://developer.android.com/guide/topics/manifest/activity-element.html (vedere la sezione android: launchMode)