Frammento

Segmenta l'app in più schermate indipendenti ospitate all'interno di un'attività.
Ultimo aggiornamento Release stabile Candidato per la release Release beta Release alpha
13 agosto 2025 1.8.9 - - -

Dichiara le dipendenze

Per aggiungere una dipendenza da Fragment, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

dependencies {
    def fragment_version = "1.8.9"

    // Java language implementation
    implementation "androidx.fragment:fragment:$fragment_version"
    // Kotlin
    implementation "androidx.fragment:fragment-ktx:$fragment_version"
    // Compose
    implementation "androidx.fragment:fragment-compose:$fragment_version"
    // Testing Fragments in Isolation
    debugImplementation "androidx.fragment:fragment-testing-manifest:$fragment_version"
    androidTestImplementation "androidx.fragment:fragment-testing:$fragment_version"
}

Kotlin

dependencies {
    val fragment_version = "1.8.9"

    // Java language implementation
    implementation("androidx.fragment:fragment:$fragment_version")
    // Kotlin
    implementation("androidx.fragment:fragment-ktx:$fragment_version")
    // Compose
    implementation("androidx.fragment:fragment-compose:$fragment_version")
    // Testing Fragments in Isolation
    debugImplementation("androidx.fragment:fragment-testing:$fragment_version")
}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per saperne di più, consulta la documentazione di Issue Tracker.

Versione 1.8

Versione 1.8.9

13 agosto 2025

androidx.fragment:fragment-*:1.8.9 è stato rilasciato. La versione 1.8.9 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui l'annullamento di un gesto Indietro predittivo che attiva un'operazione di nascondimento fa sì che il gesto successivo non venga animato correttamente quando si utilizzano gli animatori. (I0a400, b/384765586)
  • È stato corretto un errore per cui una combinazione di setMaxLifecycle e popBackStack non riusciva a spostare il frammento superiore su RESUMED. (I3448b, b/406127576)

Versione 1.8.8

4 giugno 2025

androidx.fragment:fragment-*:1.8.8 è stato rilasciato. La versione 1.8.8 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui FragmentManager si arrestava in modo anomalo durante il tentativo di salvare lo stato dei frammenti aggiunti con setMaxLifecycle(Lifecycle.State.INITIALIZED). Questi frammenti, poiché non sono mai stati sottoposti a onCreate(), non hanno più alcuno stato salvato o onSaveInstanceState() chiamato. (I6e37a)

Versione 1.8.7

20 maggio 2025

androidx.fragment:fragment-*:1.8.7 è stato rilasciato. La versione 1.8.7 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui FragmentManager non si trovava nello stato corretto dopo le operazioni di pop and replace nello stesso frame, il che poteva causare un arresto anomalo in combinazione con il pop del backstack tramite popBackStack o il gesto Indietro predittivo. (I50ad1)
  • È stato corretto un arresto anomalo causato dall'utilizzo di AndroidX Transitions e dal verificarsi di una situazione in cui transazioni di frammenti consecutive rapide tentano di annullare una transizione non avviata e la libreria AndroidX Transition non cancella correttamente lo stato della transizione. (vedi b/414612221). (Ib5235)

Versione 1.8.6

12 febbraio 2025

androidx.fragment:fragment-*:1.8.6 è stato rilasciato. La versione 1.8.6 contiene questi commit.

Correzioni di bug

  • L'override di FragmentContainerView di setOnApplyWindowInsetsListener ora accetta un listener nullo, in linea con quanto consentito dal framework. (I575f0, b/282790626)

Versione 1.8.5

30 ottobre 2024

androidx.fragment:fragment-*:1.8.5 è stato rilasciato. La versione 1.8.5 contiene questi commit.

Correzioni di bug

  • È stato corretto un IllegalStateException attivato da saveBackStack solo dopo che un gesto Indietro predittivo è stato annullato o interrotto. (I3387d, b/342419080)

Versione 1.8.4

2 ottobre 2024

androidx.fragment:fragment-*:1.8.4 è stato rilasciato. La versione 1.8.4 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui la pressione rapida del pulsante Indietro del sistema o l'esecuzione rapida del gesto Indietro causava l'arresto anomalo dei frammenti quando si utilizzavano le transizioni Androidx. (Ibc038, b/364804225)
  • È stato risolto un problema nei fragment per cui l'interruzione di un gesto Indietro predittivo causava l'inserimento del fragment manager in uno stato indefinito e persino la visualizzazione del fragment errato. (If82e2, b/338624457)
  • È stato corretto un UninitializedPropertyAccessException in AndroidFragment durante la sostituzione dinamica della classe utilizzata dall'istanza AndroidFragment. (I12dea)

Versione 1.8.3

4 settembre 2024

androidx.fragment:fragment-*:1.8.3 è stato rilasciato. La versione 1.8.3 contiene questi commit.

Correzioni di bug

  • FragmentManager ora tiene correttamente conto delle operazioni in attesa durante la gestione del gesto Indietro predittivo. In questo modo, il ripristino del sistema non dovrebbe più causare un IndexOutOfBoundsException. (I9ba32, b/342316801)
  • AndroidFragment non si arresta più in modo anomalo se viene aggiunto alla composizione mentre lo stato dell'attività/del fragment contenitore è già salvato. (I985e9, b/356643968)

Versione 1.8.2

24 luglio 2024

androidx.fragment:fragment-*:1.8.2 è stato rilasciato. La versione 1.8.2 contiene questi commit.

Correzioni di bug

  • AndroidFragment ora gestisce correttamente i casi in cui il Fragment principale viene inserito nello stack back stack, evitando problemi di tipo "Nessuna visualizzazione trovata per l'ID" quando si torna a quel Fragment. (I94608)
  • I frammenti aggiunti tramite il metodo FragmentTransaction.add che accetta un ViewGroup ora attendono onContainerAvailable prima di passare a onStart(). Ciò influisce sugli utenti di questa API, ad esempio AndroidFragment, che ora attende che AndroidFragment rientri nella composizione prima di spostarlo tramite onStart(). (I94608)

Versione 1.8.1

26 giugno 2024

androidx.fragment:fragment-*:1.8.1 è stato rilasciato. La versione 1.8.1 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui i fragment senza contenitore venivano immediatamente DESTROYED all'avvio di un gesto Indietro predittivo. Ora vengono mantenuti nello stato CREATED fino al completamento del gesto. (If6b83, b/345244539)

Versione 1.8.0

12 giugno 2024

androidx.fragment:fragment-*:1.8.0 è stato rilasciato. La versione 1.8.0 contiene questi commit.

Modifiche importanti dalla versione 1.7.0

  • L'artefatto fragment-compose ora contiene un AndroidFragment Composable che consente di aggiungere frammenti alla gerarchia di Compose tramite il nome della classe del frammento. Gestisce automaticamente il salvataggio e il ripristino dello stato del fragment. Questo metodo deve essere utilizzato come sostituto diretto dell'approccio consigliato in precedenza di utilizzare AndroidViewBinding per gonfiare un fragment.
  • Il callback onBackStackChangeCancelled sull'interfaccia OnBackStackChangedListener di FragmentManager viene ora attivato nell'ambito dell'esecuzione delle operazioni in FragmentManager, in modo da allinearlo maggiormente alla tempistica del callback onBackStackChangeCommitted.

Versione 1.8.0-rc01

29 maggio 2024

androidx.fragment:fragment-*:1.8.0-rc01 è stato rilasciato. La versione 1.8.0-rc01 contiene questi commit.

Correzioni di bug

  • Il callback onBackStackChangeCancelled sull'interfaccia FragmentManagers OnBackStackChangedListener viene ora attivato nell'ambito dell'esecuzione delle operazioni in FragmentManager, in modo da allinearlo maggiormente alla tempistica del callback onBackStackChangeCommitted. (I5ebfb, b/332916112)

Versione 1.8.0-beta01

14 maggio 2024

androidx.fragment:fragment-*:1.8.0-beta01 è stato rilasciato. La versione 1.8.0-beta01 contiene questi commit.

Correzioni di bug

  • Da Fragment 1.7.1: la funzionalità Indietro predittivo verrà eseguita solo per le transazioni in cui tutti i fragment hanno un'animazione o una transizione Androidx ricercabile. È stato risolto un problema per cui l'annullamento di una transazione parzialmente ricercabile causava la visualizzazione di una schermata nera. (I43037, b/339169168)

Versione 1.8.0-alpha02

17 aprile 2024

androidx.fragment:fragment-*:1.8.0-alpha02 è stato rilasciato. La versione 1.8.0-alpha02 contiene questi commit.

Correzioni di bug

  • Da Frammento 1.7.0-rc02: sono stati aggiunti log per indicare perché l'impostazione di un sharedElement senza altre transizioni non verrà eseguita. (Iec48e)
  • Da Frammento 1.7.0-rc02: è stato corretto un bug per cui si verificava un arresto anomalo se a una transazione venivano aggiunti elementi condivisi non ricercabili, mentre tutte le altre transizioni erano ricercabili. Ora la transazione verrà considerata correttamente non ricercabile. (I18ccd)

Versione 1.8.0-alpha01

3 aprile 2024

androidx.fragment:fragment-*:1.8.0-alpha01 è stato rilasciato. La versione 1.8.0-alpha01 contiene questi commit.

Nuove funzionalità

  • Il nuovo AndroidFragment Composable consente di aggiungere frammenti alla gerarchia di Compose tramite il nome della classe del frammento. Gestisce automaticamente il salvataggio e il ripristino dello stato del fragment. Può essere utilizzato come sostituto diretto di AndroidViewBinding Composable.(b/312895363, Icf841)

Modifiche alla documentazione

  • È stata aggiornata la documentazione delle API OnBackStackChangedListener per indicare quando vengono chiamate e come devono essere utilizzate. (I0bfd9)

Aggiornamento delle dipendenze

Versione 1.7

Versione 1.7.1

14 maggio 2024

androidx.fragment:fragment-*:1.7.1 è stato rilasciato. La versione 1.7.1 contiene questi commit.

Correzioni di bug

  • La navigazione Indietro predittivo ora verrà eseguita solo per le transazioni in cui tutti i frammenti hanno un Animator o una transizione AndroidX ricercabile. È stato risolto un problema per cui l'annullamento di una transazione parzialmente ricercabile causava una schermata vuota. (I43037, b/339169168)

Versione 1.7.0

1° maggio 2024

androidx.fragment:fragment-*:1.7.0 è stato rilasciato. La versione 1.7.0 contiene questi commit.

Supporto del gesto Indietro predittivo

  • I fragment ora supportano la funzionalità Indietro predittivo in-app quando si utilizza Animator o AndroidX Transition 1.5.0. In questo modo, gli utenti possono utilizzare il gesto Indietro per visualizzare il frammento precedente cercando l'animatore/la transizione prima di decidere se completare la transazione tramite il gesto o annullarla.
Transition System Risorsa XML Supporta il gesto Indietro predittivo
Animation R.anim No
Animator R.animator
Framework Transition R.transition No
AndroidX Transition con Transition 1.4.1 o versioni precedenti R.transition No
AndroidX Transition con Transition 1.5.0 R.transition

Se riscontri problemi con il supporto dell'Indietro predittivo in Fragment dopo aver attivato il gesto Indietro predittivo, segnala un problema relativo a Fragment con un progetto di esempio che riproduce il problema. Puoi disattivare l'Indietro predittivo utilizzando FragmentManager.enabledPredictiveBack(false) nella onCreate() della tua Activity.

FragmentManager.OnBackStackChangedListener() ora fornisce onBackStackChangeProgressed() e onBackStackChangeCancelled() per ricevere rispettivamente l'avanzamento dell'Indietro predittivo e gli eventi annullati.

Fragment Compose Artifact

È stato creato un nuovo artefatto fragment-compose incentrato sul supporto delle app in fase di transizione da un'architettura basata su Fragment a un'architettura basata interamente su Compose.

La prima funzionalità disponibile in questo nuovo artefatto è un metodo di estensione content su Fragment che mira a semplificare l'utilizzo di Compose per la UI di un singolo Fragment creando un ComposeView e impostando il ViewCompositionStrategy corretto.

  class ExampleFragment : Fragment() {

      override fun onCreateView(
          inflater: LayoutInflater,
          container: ViewGroup?,
          savedInstanceState: Bundle?
      ) = content {
          // Write your @Composable content here
          val viewModel: ExampleViewModel = viewModel()

          // or extract it into a separate, testable method
          ExampleComposable(viewModel)
      }
  }

Versione 1.7.0-rc02

17 aprile 2024

androidx.fragment:fragment-*:1.7.0-rc02 è stato rilasciato. La versione 1.7.0-rc02 contiene questi commit.

Correzioni di bug

  • Sono stati aggiunti log per indicare perché l'impostazione di un sharedElement senza altre transizioni non verrà eseguita. (Iec48e)
  • È stato corretto un bug per cui si verificava un arresto anomalo se a una transazione venivano aggiunti elementi condivisi non ricercabili, mentre tutte le altre transizioni erano ricercabili. Ora la transazione verrà considerata correttamente non ricercabile. (I18ccd)

Versione 1.7.0-rc01

3 aprile 2024

androidx.fragment:fragment-*:1.7.0-rc01 è stato rilasciato. La versione 1.7.0-rc01 contiene questi commit.

Aggiornamento delle dipendenze

Versione 1.7.0-beta01

20 marzo 2024

androidx.fragment:fragment-*:1.7.0-beta01 è stato rilasciato. La versione 1.7.0-beta01 contiene questi commit.

Modifiche alle API

  • FragmentHostCallback è ora scritto in Kotlin, in modo che il supporto di valori null del tipo generico dell'host corrisponda al supporto di valori null del tipo restituito di onGetHost(). (I40af5)

Correzioni di bug

  • È stato risolto un problema per cui, quando si esegue un gesto di Indietro predittivo su un frammento che non si trova in un contenitore, questo frammento non viene mai eliminato. Il frammento verrà immediatamente spostato nello stato finale. (Ida0d9)
  • È stato risolto un problema in Fragments per cui l'interruzione delle transizioni in entrata con un gesto Indietro predittivo distruggeva la visualizzazione in entrata e lasciava una schermata vuota. (Id3f22, b/319531491)

Versione 1.7.0-alpha10

7 febbraio 2024

androidx.fragment:fragment-*:1.7.0-alpha10 è stato rilasciato. La versione 1.7.0-alpha10 contiene questi commit.

Correzioni di bug

  • È stato risolto il problema noto nella versione precedente di Fragment in cui, se si utilizzava il supporto della funzionalità Indietro predittivo di Fragment per Animator o la transizione AndroidX, i fragment generavano un errore NullPointerException da handleOnBackProgressed se non era mai stato aggiunto alcun FragmentManager.OnBackStackChangedListener tramite addOnBackStackChangedListener. (I7c835)

Versione 1.7.0-alpha09

24 gennaio 2024

androidx.fragment:fragment-*:1.7.0-alpha09 è stato rilasciato. La versione 1.7.0-alpha09 contiene questi commit.

Fragment Compose Artifact

È stato creato un nuovo artefatto fragment-compose incentrato sul supporto delle app in fase di transizione da un'architettura basata su Fragment a un'architettura basata interamente su Compose.

La prima funzionalità disponibile in questo nuovo artefatto è un metodo di estensione content su Fragment che mira a semplificare l'utilizzo di Compose per la UI di un singolo Fragment creando un ComposeView e impostando il ViewCompositionStrategy corretto. (561cb7, b/258046948)

class ExampleFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ) = content {
        // Write your @Composable content here
        val viewModel: ExampleViewModel = viewModel()

        // or extract it into a separate, testable method
        ExampleComposable(viewModel)
    }
}

Nuove funzionalità

  • FragmentManager.OnBackStackChangedListener() ora fornisce onBackStackChangeProgressed() e onBackStackChangeCancelled() per ricevere rispettivamente l'avanzamento dell'Indietro predittivo e gli eventi annullati. (214b87)

Problema noto

  • Quando utilizzi il supporto della funzionalità Indietro predittivo di Fragment per Animator o la transizione AndroidX, i fragment genereranno un NullPointerException da handleOnBackProgressed se non è mai stato aggiunto alcun FragmentManager.OnBackStackChangedListener tramite addOnBackStackChangedListener. L'aggiunta manuale di un listener risolverà il problema. Una correzione sarà disponibile nella prossima release di Fragments.

Versione 1.7.0-alpha08

10 gennaio 2024

androidx.fragment:fragment-*:1.7.0-alpha08 è stato rilasciato. La versione 1.7.0-alpha08 contiene questi commit.

Pulizia

Versione 1.7.0-alpha07

29 novembre 2023

androidx.fragment:fragment-*:1.7.0-alpha07 è stato rilasciato. La versione 1.7.0-alpha07 contiene questi commit.

Correzioni di bug

  • È stato corretto un NullPointerException causato dall'impostazione di una transizione degli elementi condivisi e dal mancato impostazione di una transizione di entrata/uscita. (I8472b)
  • Da Fragment 1.6.2: quando viene aumentato il Fragment di un FragmentContainerView, i relativi stati, come FragmentManager, Host e ID, sono ora accessibili nel callback onInflate. (I1e44c, b/307427423)
  • Da Frammento 1.6.2: quando utilizzi clearBackStack per rimuovere un insieme di frammenti, l'ViewModel di qualsiasi frammento nidificato verrà ora cancellato quando vengono cancellati gli ViewModels del frammento principale. (I6d83c, b/296173018)

Versione 1.7.0-alpha06

4 ottobre 2023

androidx.fragment:fragment-*:1.7.0-alpha06 è stato rilasciato. La versione 1.7.0-alpha06 contiene questi commit.

Aggiornamento delle dipendenze

  • I fragment sono stati aggiornati in modo da dipendere dalla nuova API animateToStart aggiunta in Transition 1.5.0-alpha04.

Versione 1.7.0-alpha05

20 settembre 2023

androidx.fragment:fragment-*:1.7.0-alpha05 è stato rilasciato. La versione 1.7.0-alpha05 contiene questi commit.

Nuove funzionalità

  • I fragment ora supportano Indietro predittivo quando si utilizzano le transizioni AndroidX. In questo modo, puoi utilizzare il gesto Indietro per cercare il frammento precedente con la transizione Androidx personalizzata prima di decidere se eseguire o annullare la transazione tramite il gesto completato. Per attivare questa funzionalità, devi fare affidamento alla release Transition 1.5.0-alpha03. (Ib49b4, b/285175724)

Problemi noti

  • Al momento si verifica un problema per cui, dopo aver annullato un gesto Indietro con una transizione, la volta successiva che avvii il gesto Indietro la transizione non viene eseguita, causando una schermata vuota. Ciò potrebbe essere dovuto a un problema nella libreria Transition. (b/300157785). Se riscontri questo problema, segnala un problema relativo a Fragment con un progetto di esempio che riproduce il problema. Puoi disattivare l'Indietro predittivo utilizzando FragmentManager.enabledPredictiveBack(false) nella onCreate() della tua Activity.

Versione 1.7.0-alpha04

6 settembre 2023

androidx.fragment:fragment-*:1.7.0-alpha04 è stato rilasciato. La versione 1.7.0-alpha04 contiene questi commit.

Correzioni di bug

  • Risolto un problema durante l'annullamento di un gesto Indietro predittivo in cui i fragment non riuscivano a raggiungere lo stato Lifecycle corretto. (I7cffe, b/297379023)
  • È stata corretta una regressione che consentiva l'esecuzione di animazioni con transizioni. (I59f36)
  • È stato risolto un problema che si verificava quando si utilizzava l'Indietro predittivo con i frammenti: il tentativo di tornare indietro due volte in rapida successione nel penultimo frammento dello stack precedente causava un arresto anomalo. (Ifa1a4)

Versione 1.7.0-alpha03

23 agosto 2023

androidx.fragment:fragment-*:1.7.0-alpha03 è stato rilasciato. La versione 1.7.0-alpha03 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema con i frammenti durante l'utilizzo di Indietro predittivo che causava l'omissione del primo frammento nella back stack del fragment manager e la chiusura dell'Activity quando si utilizzava il pulsante Indietro del sistema tramite la navigazione con tre pulsanti o il gesto Indietro predittivo. (I0664b, b/295231788)

Versione 1.7.0-alpha02

9 agosto 2023

androidx.fragment:fragment-*:1.7.0-alpha02 è stato rilasciato. La versione 1.7.0-alpha02 contiene questi commit.

Correzioni di bug

  • Quando utilizzi i frammenti con i gesti di indietro predittivi dall'API 34, se utilizzi un sistema di transizione che non supporta la ricerca (Animations, Transitions) o nessuna transizione, i frammenti ora attenderanno il completamento del gesto prima di eseguire l'azione Indietro. (I8100c)

Versione 1.7.0-alpha01

7 giugno 2023

androidx.fragment:fragment-*:1.7.0-alpha01 viene rilasciata. Questa versione è sviluppata in un branch interno.

Nuove funzionalità

  • I fragment ora supportano la funzionalità Indietro predittivo in-app quando utilizzi Animator. In questo modo, puoi utilizzare il gesto Indietro per visualizzare il frammento precedente con l'animatore personalizzato prima di decidere se completare la transazione tramite il gesto completato o annullarla. Puoi anche disattivare questo nuovo comportamento utilizzando enablePredictiveBack() sperimentale e passando false.

Versione 1.6

Versione 1.6.2

1° novembre 2023

androidx.fragment:fragment-*:1.6.2 è stato rilasciato. La versione 1.6.2 contiene questi commit.

Correzioni di bug

  • Quando il frammento di un FragmentContainerView viene gonfiato, i relativi stati, come FragmentManager, Host e id, sono ora accessibili nel callback onInflate. (I1e44c, b/307427423)
  • Quando utilizzi clearBackStack per rimuovere un insieme di frammenti, il valore ViewModel di qualsiasi frammento nidificato verrà ora cancellato quando vengono cancellati i valori ViewModels del frammento principale. (I6d83c, b/296173018)

Versione 1.6.1

26 luglio 2023

androidx.fragment:fragment-*:1.6.1 è stato rilasciato. La versione 1.6.1 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui lo stato salvato memorizzato quando l'attività veniva interrotta ma non eliminata veniva memorizzato nella cache in modo errato anche dopo che l'istanza del frammento veniva riportata allo stato RESUMED. In questo modo, lo stato memorizzato nella cache viene riutilizzato se l'istanza del fragment si trova nello stack precedente quando si utilizza l'API per più back stack per salvare e ripristinare il fragment. (I71288, b/246289075)

Aggiornamento delle dipendenze

  • Il frammento ora dipende da Activity 1.7.2. In questo modo viene risolto un problema per cui gli utenti Kotlin non potevano estendere ComponentDialog senza una dipendenza esplicita da Activity. (b/287509323)

Versione 1.6.0

7 giugno 2023

androidx.fragment:fragment-*:1.6.0 è stato rilasciato. La versione 1.6.0 contiene questi commit.

Modifiche importanti dalla versione 1.5.0

  • Lo stato salvato di Fragment è stato suddiviso interamente tra lo stato della libreria privata (classi Parcelable personalizzate) e lo stato fornito dallo sviluppatore, che ora viene sempre archiviato in un Bundle che consente di determinare esattamente l'origine dello stato di un fragment.
  • L'interfaccia FragmentManager.OnBackStackChangedListener è stata ampliata con due callback aggiuntivi di onBackStackChangeStarted e onBackStackChangeCommitted che vengono chiamati con ogni Fragment subito prima di essere aggiunti/rimossi dallo stack di back dei fragment e subito dopo il commit della transazione, rispettivamente.
  • FragmentStrictMode ha aggiunto un nuovo WrongNestedHierarchyViolation che rileva quando un frammento secondario è nidificato all'interno della gerarchia di oggetti View del frammento principale, ma non aggiunto al childFragmentManager del frammento principale.
  • Le API Fragment e FragmentManager che accettano un Intent o un IntentSender ora sono annotate correttamente con @NonNull per impedire il passaggio di un valore nullo, in quanto un valore nullo causerebbe sempre l'arresto anomalo immediato delle rispettive API del framework Android chiamate da questi metodi.
  • DialogFragment ora fornisce l'accesso a ComponentDialog sottostanti tramite l'API requireComponentDialog().
  • Il frammento ora dipende da Lifecycle 2.6.1.
  • Ora Fragment dipende da SavedState 1.2.1.
  • Ora Fragment dipende da ProfileInstaller 1.3.0.
  • L'artefatto fragment-testing-manifest separa le voci del manifest dal resto dei componenti di test dei fragment. Ciò significa che puoi:

    debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
    androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")
    

    In questo modo si evitano conflitti dovuti a differenze di versione tra fragment-testing e androidx.test

Versione 1.6.0-rc01

10 maggio 2023

androidx.fragment:fragment-*:1.6.0-rc01 è stato rilasciato. La versione 1.6.0-rc01 contiene questi commit.

Correzioni di bug

  • Risolto un problema che causava l'invio di ActivityResult con il codice di richiesta errato quando venivano effettuate più richieste startActivityForResult consecutivamente. (If0b9d, b/249519359)
  • È stato risolto un problema per cui i callback onBackStackChangeListener venivano inviati per le transazioni che non modificavano effettivamente il back stack se erano mescolati con transazioni che lo facevano. (I0eb5c, b/279306628)

Versione 1.6.0-beta01

19 aprile 2023

androidx.fragment:fragment-*:1.6.0-beta01 è stato rilasciato. La versione 1.6.0-beta01 contiene questi commit.

Correzioni di bug

  • L'utilizzo di postponeEnterTransition con un timeout e la successiva sostituzione del frammento posticipato non comporta più la perdita del frammento posticipato. (I2ec7d, b/276375110)
  • I nuovi callback onBackStackChangeStarted e onBackStackChangeCommitted ora invieranno un frammento una sola volta, anche se più transazioni contengono lo stesso frammento. (Ic6b69)

Versione 1.6.0-alpha09

5 aprile 2023

androidx.fragment:fragment-*:1.6.0-alpha09 è stato rilasciato. La versione 1.6.0-alpha09 contiene questi commit.

Modifiche alle API

  • DialogFragment ora fornisce l'accesso a ComponentDialog sottostanti tramite l'API requireComponentDialog(). (I022e3, b/234274777)
  • Le API dei fragmenti commitNow(), executePendingTransactions() e popBackStackImmediate() sono state annotate con @MainThread, il che significa che ora genereranno tutte errori di compilazione quando non vengono chiamate dal thread principale anziché attendere l'errore in fase di runtime. (Ic9665, b/236538905)

Correzioni di bug

  • È stato corretto un bug in FragmentManager per cui il salvataggio e il ripristino nello stesso frame potevano causare un arresto anomalo. (Ib36af, b/246519668)
  • I callback OnBackStackChangedListener onBackStackChangeStarted e onBackStackChangeCommitted ora vengono eseguiti solo quando viene modificato il back stack FragmentManager. (I66055, b/274788957)

Versione 1.6.0-alpha08

22 marzo 2023

androidx.fragment:fragment-*:1.6.0-alpha08 è stato rilasciato. La versione 1.6.0-alpha08 contiene questi commit.

Modifica del comportamento

  • La tempistica del callback OnBackStackChangedListener.onBackStackChangeCommited è stata modificata in modo che venga eseguito prima delle operazioni sui fragment. In questo modo, alla funzione di callback non verrà mai passato un frammento scollegato. (I66a76, b/273568280)

Correzioni di bug

  • Da Fragment 1.5.6: è stato risolto un problema per cui la chiamata a clearFragmentResultListener all'interno di un setFragmentResultListener non funzionava se Lifecycle era già STARTED e un risultato era già disponibile. (If7458)

Aggiornamenti delle dipendenze

Versione 1.6.0-alpha07

8 marzo 2023

androidx.fragment:fragment-*:1.6.0-alpha07 è stato rilasciato. La versione 1.6.0-alpha07 contiene questi commit.

Correzioni di bug

  • Da Frammento 1.5.6: è stato risolto un problema per cui la rimozione di qualsiasi frammento, indipendentemente dal fatto che avesse aggiunto voci di menu o meno, invalidava il menu dell'attività. (50f098, b/244336571)

Versione 1.6.0-alpha06

22 febbraio 2023

androidx.fragment:fragment-*:1.6.0-alpha06 è stato rilasciato. La versione 1.6.0-alpha06 contiene questi commit.

Cambiamento del comportamento

  • Il nuovo callback onBackStackChangedStarted su FragmentManager's onBackStackChangedListener verrà ora eseguito prima che i frammenti inizino a passare agli stati di destinazione. (I34726)

Versione 1.6.0-alpha05

8 febbraio 2023

androidx.fragment:fragment-*:1.6.0-alpha05 è stato rilasciato. La versione 1.6.0-alpha05 contiene questi commit.

Nuove funzionalità

  • L'interfaccia FragmentManager.OnBackStackChagnedListener ora offre due callback aggiuntivi, onBackStackChangeStarted e onBackStackChangeCommitted, che consentono di ottenere informazioni e controllo aggiuntivi quando si verificano modifiche del back stack in FragmentManager. (Ib7ce5, b/238686802)

Modifiche alle API

  • Le API Fragment e FragmentManager che accettano Intent o IntentSender ora sono annotate correttamente con @NonNull per impedire il passaggio di un valore nullo, in quanto un valore nullo causerebbe sempre l'arresto anomalo immediato delle rispettive API del framework Android chiamate da questi metodi. (I06fd4)

Versione 1.6.0-alpha04

7 dicembre 2022

androidx.fragment:fragment-*:1.6.0-alpha04 è stato rilasciato. La versione 1.6.0-alpha04 contiene questi commit.

Nuove funzionalità

  • FragmentStrictMode ha aggiunto un nuovo WrongNestedHierarchyViolation che rileva quando un frammento secondario è nidificato all'interno della gerarchia di oggetti View del frammento principale, ma non aggiunto al childFragmentManager del frammento principale. (I72521, b/249299268)

Modifiche al comportamento

  • I fragment ora ripristinano il loro stato SavedStateRegistry prima di onAttach(), garantendo che sia disponibile da tutti i metodi del ciclo di vita verso l'alto. (I1e2b1)

Modifiche alle API

  • L'artefatto fragment-testing-manifest separa le voci del manifest dal resto dei componenti di test dei fragment. Ciò significa che puoi:
debugImplementation("androidx.fragment:fragment-testing-manifest:X.Y.Z")
androidTestImplementation("androidx.fragment:fragment-testing:X.Y.Z")

In questo modo si evitano conflitti dovuti alla differenza di versione tra fragment-testing e androidx.test.(I8e534, b/128612536)

Correzioni di bug

  • Da Fragment 1.5.5: i fragment non salveranno più erroneamente lo stato ViewModel come parte dello stato salvato del registro delle visualizzazioni. (I10d2b, b/253546214)

Versione 1.6.0-alpha03

5 ottobre 2022

androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 e androidx.fragment:fragment-testing:1.6.0-alpha03 sono stati rilasciati. La versione 1.6.0-alpha03 contiene questi commit.

Modifiche alle API

  • I corsi che si estendono oltre il giorno DialogFragment ora dovranno chiamare il supervisore nei relativi override onDismiss(). (I14798, b/238928865)

Correzioni di bug

  • Sono state corrette le regressioni causate dall'integrazione delle nuove interfacce di callback del provider (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) per garantire che i fragment ricevano sempre i callback appropriati. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

Versione 1.6.0-alpha02

24 agosto 2022

androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 e androidx.fragment:fragment-testing:1.6.0-alpha02 sono stati rilasciati. La versione 1.6.0-alpha02 contiene questi commit.

Correzioni di bug

  • Da Fragment 1.5.2: è stato risolto un problema per cui l'esecuzione contemporanea di una transazione popBackStack() e una transazione replace() poteva causare l'esecuzione di Animation/Animator errati nei fragment in uscita. (Ib1c07, b/214835303)

Versione 1.6.0-alpha01

27 luglio 2022

androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 e androidx.fragment:fragment-testing:1.6.0-alpha01 sono stati rilasciati. La versione 1.6.0-alpha01 contiene questi commit.

Modifiche al comportamento

  • Lo stato salvato di Fragment è stato suddiviso interamente tra lo stato della libreria privata (classi Parcelable personalizzate) e lo stato fornito dallo sviluppatore, che ora viene sempre archiviato in un Bundle che consente di determinare esattamente l'origine dello stato di un fragment. (b/207158202)

Correzioni di bug

  • Da Fragment 1.5.1: correggi una regressione in DialogFragmentCallbacksDetector in cui l'utilizzo della versione di lint inclusa in AGP 7.4 causava l'arresto anomalo di lint. (b/237567009)

Aggiornamento delle dipendenze

Versione 1.5

Versione 1.5.7

19 aprile 2023

androidx.fragment:fragment:1.5.7, androidx.fragment:fragment-ktx:1.5.7 e androidx.fragment:fragment-testing:1.5.7 sono stati rilasciati. La versione 1.5.7 contiene questi commit.

Correzioni di bug

  • L'utilizzo di postponeEnterTransition con un timeout e la successiva sostituzione del frammento posticipato non comporta più la perdita del frammento posticipato. (I2ec7d, b/276375110)

Versione 1.5.6

22 marzo 2023

androidx.fragment:fragment:1.5.6, androidx.fragment:fragment-ktx:1.5.6 e androidx.fragment:fragment-testing:1.5.6 sono stati rilasciati. La versione 1.5.6 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema a causa del quale la rimozione di qualsiasi frammento, indipendentemente dal fatto che avesse aggiunto voci di menu o meno, invalidava il menu dell'attività. (50f098, b/244336571)
  • È stato risolto un problema per cui la chiamata a clearFragmentResultListener all'interno di un setFragmentResultListener non funzionava se Lifecycle era già STARTED e un risultato era già disponibile. (If7458)

Versione 1.5.5

7 dicembre 2022

androidx.fragment:fragment:1.5.5, androidx.fragment:fragment-ktx:1.5.5 e androidx.fragment:fragment-testing:1.5.5 sono stati rilasciati. La versione 1.5.5 contiene questi commit.

Correzioni di bug

  • I fragment non salveranno più erroneamente lo stato di ViewModel come parte dello stato salvato del registro delle visualizzazioni. (I10d2b, b/253546214)

Versione 1.5.4

24 ottobre 2022

androidx.fragment:fragment:1.5.4, androidx.fragment:fragment-ktx:1.5.4 e androidx.fragment:fragment-testing:1.5.4 sono stati rilasciati. La versione 1.5.4 contiene questi commit.

Correzioni di bug

  • È stato corretto un errore per cui l'utilizzo di un FragmentController personalizzato con un host che non implementa un'interfaccia di callback del fornitore (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) e la chiamata alla relativa funzione di distribuzione deprecata non riuscivano a distribuire ai fragment secondari. (I9b380)

Versione 1.5.3

21 settembre 2022

androidx.fragment:fragment:1.5.3, androidx.fragment:fragment-ktx:1.5.3 e androidx.fragment:fragment-testing:1.5.3 sono stati rilasciati. La versione 1.5.3 contiene questi commit.

Correzioni di bug

  • È stato corretto un errore che causava la ricezione di callback onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() e onConfigurationChanged() per i frammenti nel back stack. (I34581, I8dfe6, b/242570955)
  • I frammenti secondari nidificati non riceveranno più più callback onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() o onConfigurationChanged(). (I690b3, Id0096, If9d6b, I2cba2)

Versione 1.5.2

10 agosto 2022

androidx.fragment:fragment:1.5.2, androidx.fragment:fragment-ktx:1.5.2 e androidx.fragment:fragment-testing:1.5.2 sono stati rilasciati. La versione 1.5.2 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui l'esecuzione contemporanea di una transazione popBackStack() e di una transazione replace() poteva causare l'esecuzione di Animation/Animator errati per i frammenti in uscita. (Ib1c07, b/214835303)

Versione 1.5.1

27 luglio 2022

androidx.fragment:fragment:1.5.1, androidx.fragment:fragment-ktx:1.5.1 e androidx.fragment:fragment-testing:1.5.1 sono stati rilasciati. La versione 1.5.1 contiene questi commit.

Correzioni di bug

  • Correzione di una regressione in DialogFragmentCallbacksDetector in cui l'utilizzo della versione di lint inclusa in AGP 7.4 causava l'arresto anomalo di lint. (b/237567009)

Aggiornamento delle dipendenze

Versione 1.5.0

29 giugno 2022

androidx.fragment:fragment:1.5.0, androidx.fragment:fragment-ktx:1.5.0 e androidx.fragment:fragment-testing:1.5.0 sono stati rilasciati. La versione 1.5.0 contiene questi commit.

Modifiche importanti dalla versione 1.4.0

  • Integrazione di CreationExtras: Fragment ora può fornire un ViewModelProvider.Factory stateless tramite Lifecycle 2.5.0 di CreationExtras.
  • Integrazione della finestra di dialogo dei componenti: DialogFragment ora utilizza ComponentDialog tramite Activity 1.5.0 come finestra di dialogo predefinita restituita da onCreateDialog().
  • Refactoring dello stato dell'istanza salvata: i fragment hanno iniziato a modificare il modo in cui salvano lo stato dell'istanza. Questo tentativo ha lo scopo di identificare chiaramente lo stato salvato nel frammento e la relativa origine. Le modifiche attuali includono quanto segue:
    • FragmentManager ora salva lo stato dell'istanza salvata in un Bundle anziché direttamente in un Parcelable personalizzato.
    • I risultati impostati tramite Fragment Result APIs che non sono ancora stati pubblicati vengono ora salvati separatamente dallo stato interno di FragmentManager.
    • Lo stato associato a ogni singolo frammento viene ora salvato separatamente dallo stato interno di FragmentManager, consentendoti così di correlare la quantità di stato salvato associato a un singolo frammento con gli ID univoci presenti nel logging di debug di Fragment.

Altre modifiche

  • FragmentStrictMode ora offre la possibilità ai frammenti privati di terze parti di ignorare sanzioni specifiche per violazioni utilizzando allowViolation() con il nome della classe.
  • Le API Fragment per fornire un menu all'ActionBar della tua attività sono state ritirate. Le API MenuHost e MenuProvider aggiunte in Activity 1.4.0 forniscono una superficie API equivalente, testabile e consapevole del ciclo di vita che i fragment devono utilizzare.

Versione 1.5.0-rc01

11 maggio 2022

androidx.fragment:fragment:1.5.0-rc01, androidx.fragment:fragment-ktx:1.5.0-rc01 e androidx.fragment:fragment-testing:1.5.0-rc01 sono stati rilasciati. La versione 1.5.0-rc01 contiene questi commit.

Refactoring dello stato dell'istanza salvata

  • Lo stato associato a ogni singolo frammento viene ora salvato separatamente dallo stato interno di FragmentManager, consentendoti così di correlare la quantità di stato salvato associato a un singolo frammento con gli ID univoci presenti nel logging di debug dei frammenti. (a153e0, b/207158202)

Versione 1.5.0-beta01

20 aprile 2022

androidx.fragment:fragment:1.5.0-beta01, androidx.fragment:fragment-ktx:1.5.0-beta01 e androidx.fragment:fragment-testing:1.5.0-beta01 sono stati rilasciati. La versione 1.5.0-beta01 contiene questi commit.

Modifiche alle API

  • DialogFragment ha aggiunto un nuovo metodo dismissNow che utilizza commitNow per la parità con la funzione showNow. Tieni presente che Dialog non verrà chiuso immediatamente, ma lo stato di FragmentManager verrà aggiornato in modo sincrono. (I15c36, b/72644830)

Refactoring dello stato dell'istanza salvata

  • FragmentManager ora salva lo stato dell'istanza salvata in un Bundle anziché direttamente in un Parcelable personalizzato. Questo è il primo passo per fornire maggiore trasparenza su ciò che viene effettivamente salvato da Frammenti. (I93807, b/207158202)
  • I risultati impostati tramite le API Fragment Result che non sono ancora stati pubblicati vengono ora salvati separatamente dallo stato interno di FragmentManager. In questo modo, sarà più chiaro quali risultati vengono salvati nell'ambito dello stato dell'istanza salvata. (I6ea12, b/207158202)

Versione 1.5.0-alpha05

6 aprile 2022

androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 e androidx.fragment:fragment-testing:1.5.0-alpha05 sono stati rilasciati. La versione 1.5.0-alpha05 contiene questi commit.

Modifiche alle API

Versione 1.5.0-alpha04

23 marzo 2022

androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 e androidx.fragment:fragment-testing:1.5.0-alpha04 sono stati rilasciati. La versione 1.5.0-alpha04 contiene questi commit.

Modifiche alle API

  • Le API Fragment per fornire un menu al ActionBar della tua attività sono state ritirate perché accoppiano strettamente il fragment all'attività e non sono testabili in isolamento. Le API MenuHost e MenuProvider aggiunte in Activity 1.4.0-alpha01 forniscono una superficie API equivalente, testabile e consapevole del ciclo di vita che i fragment devono utilizzare. (I50a59, I20758)

Correzioni di bug

  • SavedStateViewFactory ora supporta l'utilizzo di CreationExtras anche se è stato inizializzato con un SavedStateRegistryOwner. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583)

Versione 1.5.0-alpha03

23 febbraio 2022

androidx.fragment:fragment:1.5.0-alpha03, androidx.fragment:fragment-ktx:1.5.0-alpha03 e androidx.fragment:fragment-testing:1.5.0-alpha03 sono stati rilasciati. La versione 1.5.0-alpha03 contiene questi commit.

Modifiche alle API

  • Ora puoi passare CreationExtras alle funzioni by viewModels() e by activityViewModels(). (Ibefe7, b/217601110)

Modifiche al comportamento

Versione 1.5.0-alpha02

9 febbraio 2022

androidx.fragment:fragment:1.5.0-alpha02, androidx.fragment:fragment-ktx:1.5.0-alpha02 e androidx.fragment:fragment-testing:1.5.0-alpha02 sono stati rilasciati. La versione 1.5.0-alpha02 contiene questi commit.

Nuove funzionalità

  • FragmentStrictMode ora offre la possibilità ai frammenti privati di terze parti di ignorare sanzioni specifiche per violazioni utilizzando allowViolation() con il nome della classe. (I8f678)

Versione 1.5.0-alpha01

26 gennaio 2022

androidx.fragment:fragment:1.5.0-alpha01, androidx.fragment:fragment-ktx:1.5.0-alpha01 e androidx.fragment:fragment-testing:1.5.0-alpha01 sono stati rilasciati. La versione 1.5.0-alpha01 contiene questi commit.

Nuove funzionalità

Correzioni di bug

  • Da Fragment 1.4.1: FragmentContainerView non genera più un'eccezione di stato non valido quando gli ID visualizzazione generati da XML hanno valori negativi. (Ic185b, b/213086140)
  • Da Fragment 1.4.1: quando utilizzi una lambda ownerProducer personalizzata con la funzione pigra by viewModels(), ora utilizzerà defaultViewModelProviderFactory del proprietario se non viene fornito un ViewModelProvider.Factory personalizzato, anziché utilizzare sempre la factory del fragment. (I56170, b/214106513)
  • È stato corretto un arresto anomalo che si verificava quando si accedeva a un ViewModel per la prima volta da un callback registerForActivityResult() di un Fragment. (Iea2b3)

Versione 1.4

Versione 1.4.1

26 gennaio 2022

androidx.fragment:fragment:1.4.1, androidx.fragment:fragment-ktx:1.4.1 e androidx.fragment:fragment-testing:1.4.1 sono stati rilasciati. La versione 1.4.1 contiene questi commit.

Correzioni di bug

  • FragmentContainerView non genera più un'eccezione di stato non valido quando gli ID vista generati da XML hanno valori negativi. (Ic185b, b/213086140)
  • Quando utilizzi una lambda ownerProducer personalizzata con la funzione lazy by viewModels(), ora utilizzerà defaultViewModelProviderFactory del proprietario se non viene fornito un ViewModelProvider.Factory personalizzato, anziché utilizzare sempre la factory del fragment. (I56170, b/214106513)

Versione 1.4.0

17 novembre 2021

androidx.fragment:fragment:1.4.0, androidx.fragment:fragment-ktx:1.4.0 e androidx.fragment:fragment-testing:1.4.0 sono stati rilasciati. La versione 1.4.0 contiene questi commit.

Modifiche importanti dalla versione 1.3.0

  • Le API FragmentStrictMode forniscono controlli runtime che ti consentono di verificare che la tua app o le librerie da cui dipende non chiamino API frammenti ritirate. Quando viene rilevata una violazione, puoi scegliere di stampare un messaggio di log, attivare il tuo listener personalizzato o arrestare l'app. Il FragmentStrictMode.Policy che controlla quali controlli sono abilitati e quali "penalità" vengono attivate può essere impostato su un FragmentManager tramite il nuovo metodo setStrictModePolicy(). Questo criterio si applica a FragmentManager e in modo transitivo a tutti i gestori di frammenti secondari che non impostano un proprio criterio univoco. Vedi StrictMode per i frammenti.
  • FragmentContainerView ora fornisce un metodo getFragment() che restituisce il frammento aggiunto più di recente al contenitore. Utilizza la stessa logica di findFragmentById() con l'ID di FragmentContainerView, ma consente di concatenare la chiamata.

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • FragmentScenario ora implementa Closeable, consentendoti di utilizzarlo con il metodo use di Kotlin o try-with-resources.

  • Aggiunta FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} per specificare se attivare l'animazione di transizione dell'attività standard presa dal tema nella transizione dei fragment.

  • L'API sperimentale di FragmentManager.enableNewStateManager(boolean) è stata rimossa e il nuovo gestore di stato è ora l'unica opzione disponibile.

Più back stack

FragmentManager mantiene un back stack composto da transazioni di frammenti che utilizzano addToBackStack(). In questo modo puoi estrarre queste transazioni e tornare allo stato precedente, utilizzando i meccanismi per salvare lo stato con i fragment per consentire ai fragment di ripristinare il proprio stato in modo appropriato.

Questa release amplia questi meccanismi fornendo tre nuove API FragmentManager: saveBackStack(String name), restoreBackStack(String name) e clearBackStack(String name). Queste API utilizzano lo stesso name di addToBackStack() per salvare lo stato di FragmentTransaction e di ogni frammento aggiunto in queste transazioni e consentono di ripristinare in un secondo momento le transazioni e i relativi frammenti con il loro stato intatto. In questo modo puoi "scambiare" in modo efficace più backstack salvando il backstack corrente e ripristinando un backstack salvato.

saveBackStack() funziona in modo simile a popBackStack() in quanto è asincrono e comporta l'inversione (l'eliminazione) di tutte le transazioni di frammenti con quel nome specifico e la distruzione e la rimozione di tutti i frammenti aggiunti, ma differisce per alcuni aspetti importanti:

  • saveBackStack() è sempre inclusivo.
  • A differenza di popBackStack(), che estrae tutte le transazioni dal back stack se il nome specificato non viene trovato nel back stack o se viene fornito un nome null, saveBackStack() non esegue alcuna operazione se non hai eseguito il commit di una transazione di frammenti utilizzando addToBackStack() con quel nome esatto e non null.
  • Lo stato di tutti i frammenti aggiunti da queste transazioni viene salvato. Ciò significa che lo stato della visualizzazione di ogni frammento viene memorizzato, viene chiamato onSaveInstanceState() di ogni frammento e lo stato viene ripristinato e tutte le istanze ViewModel associate a questi frammenti vengono conservate (e onCleared() non viene chiamato).

Le transazioni frammentate che possono essere utilizzate con saveBackStack() devono soddisfare determinati criteri:

  • Ogni transazione di frammento deve utilizzare setReorderingAllowed(true) per garantire che le transazioni possano essere ripristinate come singola operazione atomica.
  • Il set di transazioni salvate deve essere autonomo (ovvero non deve fare riferimento esplicito a frammenti al di fuori di questo set di transazioni) per garantire che possano essere ripristinate in un secondo momento, indipendentemente dalle modifiche apportate al back stack nel frattempo.
  • Nessun frammento salvato può essere un frammento conservato o avere un frammento conservato nel proprio insieme transitivo di frammenti figlio per garantire che FragmentManager non restituisca riferimenti a frammenti salvati dopo il salvataggio del back stack.

Analogamente a saveBackStack(), restoreBackStack() e clearBackStack(), che ripristinano o cancellano un back stack precedentemente salvato, rispettivamente, entrambi non fanno nulla se non hai chiamato saveBackStack() con lo stesso nome.

Per saperne di più, consulta Multiple back stacks: A deep dive.

Versione 1.4.0-rc01

3 novembre 2021

androidx.fragment:fragment:1.4.0-rc01 rilasciata senza modifiche rispetto a Fragment 1.4.0-beta01. La versione 1.4.0-rc01 contiene questi commit.

Versione 1.4.0-beta01

27 ottobre 2021

androidx.fragment:fragment:1.4.0-beta01, androidx.fragment:fragment-ktx:1.4.0-beta01 e androidx.fragment:fragment-testing:1.4.0-beta01 sono stati rilasciati. La versione 1.4.0-beta01 contiene questi commit.

Correzioni di bug

  • I fragment principali ora inviano onHiddenChanged() lungo l'intera gerarchia prima di avviare il proprio callback. (Iedc20, b/77504618)
  • La tastiera ora si chiude automaticamente quando si passa da un frammento con una tastiera aperta a un frammento con una visualizzazione del riciclatore. (I8b842, b/196852211)
  • DialogFragment ora utilizza setReorderingAllowed(true) per tutte le transazioni che crea quando chiami show(), showNow() o dismiss(). (Ie2c14)
  • L'avviso Lint estremamente lungo di DetachAndAttachFragmentInSameFragmentTransaction è stato abbreviato in DetachAndAttachSameFragment. (e9eca3)

Versione 1.4.0-alpha10

29 settembre 2021

androidx.fragment:fragment:1.4.0-alpha10, androidx.fragment:fragment-ktx:1.4.0-alpha10 e androidx.fragment:fragment-testing:1.4.0-alpha10 sono stati rilasciati. La versione 1.4.0-alpha10 contiene questi commit.

Pelucchi

  • È stato aggiunto l'avviso di lint DetachAndAttachFragmentInSameFragmentTransaction per rilevare la chiamata sia di detach() che di attach() sullo stesso Fragment nello stesso FragmentTransaction. Poiché queste operazioni complementari si annullano a vicenda se eseguite nella stessa transazione, devono essere suddivise in transazioni separate per avere un effetto. (aosp/1832956, b/200867930)
  • È stato aggiunto l'errore di lint FragmentAddMenuProvider per correggere gli utilizzi del ciclo di vita dei fragment nel ciclo di vita della visualizzazione dei fragment quando si utilizza l'API addMenuProvider di MenuHost. (aosp/1830457, b/200326272)

Aggiornamenti della documentazione

  • Il messaggio di ritiro delle API ora gestite dalle API Activity Result, ovvero startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions e onRequestPermissionsResult, è stato ampliato con maggiori dettagli. (cce80f)
  • Il messaggio di ritiro per onActivityCreated() sia per Fragment che per DialogFragment è stato espanso con maggiori dettagli. (224db4)

Versione 1.4.0-alpha09

15 settembre 2021

androidx.fragment:fragment:1.4.0-alpha09, androidx.fragment:fragment-ktx:1.4.0-alpha09 e androidx.fragment:fragment-testing:1.4.0-alpha09 sono stati rilasciati. La versione 1.4.0-alpha09 contiene questi commit.

Nuove funzionalità

  • Ora puoi chiamare clearBackStack(name) per cancellare qualsiasi stato salvato in precedenza con saveBackStack(name). (I70cd7)

Modifiche alle API

  • La classe FragmentContainerView è stata riscritta in Kotlin, garantendo che la funzione getFragment rispetti correttamente il supporto di valori null. (If694a, b/189629145)
  • FragmentStrictMode è ora scritto in Kotlin (I11767, b/199183506)

Correzioni di bug

  • È stato risolto un problema per cui lo stato di un Fragment aggiunto con setReorderingAllowed(true) e poi rimosso immediatamente prima dell'esecuzione delle transazioni in attesa non veniva pulito correttamente. (I8ccb8)

Versione 1.4.0-alpha08

1° settembre 2021

androidx.fragment:fragment:1.4.0-alpha08, androidx.fragment:fragment-ktx:1.4.0-alpha08 e androidx.fragment:fragment-testing:1.4.0-alpha08 sono stati rilasciati. La versione 1.4.0-alpha08 contiene questi commit.

Correzioni di bug

  • Migliorato il controllo UseRequireInsteadOfGet Lint per gestire meglio le parentesi ridondanti. (I2d865)
  • È stato migliorato il controllo UseGetLayoutInflater Lint per gestire altri casi limite. (Ie5423)

Versione 1.4.0-alpha07

18 agosto 2021

androidx.fragment:fragment:1.4.0-alpha07, androidx.fragment:fragment-ktx:1.4.0-alpha07 e androidx.fragment:fragment-testing:1.4.0-alpha07 sono stati rilasciati senza modifiche significative. La versione 1.4.0-alpha07 contiene questi commit.

Versione 1.4.0-alpha06

4 agosto 2021

androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 e androidx.fragment:fragment-testing:1.4.0-alpha06 sono stati rilasciati. La versione 1.4.0-alpha06 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema relativo a più backstack durante lo scambio rapido tra backstack che veniva visualizzato come IllegalStateException durante il ripristino di un FragmentTransaction o come seconda copia di un frammento. (I9039f)
  • È stato risolto un problema per cui FragmentManager conservava una copia dello stato salvato in precedenza tramite saveBackStack() anche dopo il ripristino di questo stato. (Ied212)
  • Il metodo dismissAllowingStateLoss() di DialogFragment non si arresta più in modo anomalo quando lo chiami dopo che lo stato è stato salvato durante l'aggiunta specifica di DialogFragment tramite il metodo show(FragmentTransaction, String). (I84422)

Versione 1.4.0-alpha05

21 luglio 2021

androidx.fragment:fragment:1.4.0-alpha05, androidx.fragment:fragment-ktx:1.4.0-alpha05 e androidx.fragment:fragment-testing:1.4.0-alpha05 sono stati rilasciati. La versione 1.4.0-alpha05 contiene questi commit.

Correzioni di bug

  • Da Fragment 1.3.6: la visualizzazione del fragment ora è impostata correttamente su GONE quando si utilizza hide() quando la visualizzazione principale ha transitionGroup=”true” impostato. (aosp/1766655, b/193603427)
  • Da Fragment 1.3.6: FragmentActivity ora sblocca sempre lo stato salvato come prima operazione nei callback del ciclo di vita che esegue l'override. (I6db7a)

Aggiornamento delle dipendenze

Versione 1.4.0-alpha04

30 giugno 2021

androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 e androidx.fragment:fragment-testing:1.4.0-alpha04 sono stati rilasciati. La versione 1.4.0-alpha04 contiene questi commit.

Modifiche alle API

  • FragmentManager ora utilizza SavedStateRegistry internamente per salvare il suo stato. Anche i metodi saveAllState() e restoreSavedState() sono stati deprecati in FragmentController. Se utilizzi FragmentController per ospitare frammenti al di fuori di FragmentActivity, il tuo FragmentHostCallbacks deve implementare SavedStateRegistryOwner. (Iba68e, b/188734238)

Correzioni di bug

  • Risolto un problema per cui la chiamata a saveBackStack() nell'ambito del supporto di più back stack non riusciva se eseguita contemporaneamente all'esecuzione di un FragmentTransaction che utilizzava replace(). (I73137)
  • È stato corretto un NullPointerException che si verificava dopo il ripristino manuale di uno stack precedente salvato che conteneva più transazioni quando si utilizzava l'API restoreBackStack() per il supporto di più stack precedenti. È stato risolto anche un problema per cui setReorderingAllowed(true) non veniva controllato per tutte le transazioni. (I8c593)
  • È stato risolto un problema per cui FragmentManager continuava erroneamente a ripristinare lo stato salvato in precedenza dei fragment anche dopo la rimozione di questi ultimi da FragmentManager, causando così un aumento continuo dello stato salvato nel tempo. (I1fb8e)

Versione 1.4.0-alpha03

16 giugno 2021

androidx.fragment:fragment:1.4.0-alpha03, androidx.fragment:fragment-ktx:1.4.0-alpha03 e androidx.fragment:fragment-testing:1.4.0-alpha03 sono stati rilasciati. La versione 1.4.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Tutte le classi Fragment StrictMode Violation sono state aggiornate con messaggi di errore più dettagliati che spiegano i dettagli della violazione. (b/187871638)
    • FragmentTagUsageViolation ora contiene un messaggio di errore più dettagliato che include il contenitore principale a cui sarebbe stato aggiunto il frammento. (Ic33a7)
    • WrongFragmentContainerViolation ora ha un messaggio di errore più dettagliato che include il contenitore a cui veniva aggiunto il frammento. (Ib55f8)
    • Le classi di casi d'uso per TargetFragmentUsageViolation ora hanno messaggi di errore più dettagliati per includere il frammento che causa la violazione e qualsiasi altra informazione contenuta. (Icc6ac)
    • Le classi che estendono RetainInstanceUsageViolation ora hanno messaggi di errore più dettagliati che includono il frammento che causa la violazione. (I6bd55)
    • FragmentReuseViolation ora ha un messaggio di errore più dettagliato che include l'ID precedente del frammento. (I28ce2)
    • SetUserVisibleHintViolation ora ha un messaggio di errore più dettagliato che include l'indicatore visibile che l'utente stava impostando. (Ib2d5f)

Modifiche al comportamento

  • È stata ripristinata la limitazione delle chiamate a fitsSystemWindows su un FragmentContainerView. L'app non si arresta più in modo anomalo. (6b8ddd, b/190622202)

Correzioni di bug

  • Da Fragment 1.3.5: è stato corretto un problema di regressione nelle transizioni degli elementi condivisi introdotto in Fragment 1.3.4 da aosp/1679887. I fragment ora gestiscono correttamente i gruppi di transizione (impostati direttamente tramite transitionGroup="true" o indirettamente tramite transitionName o background) e gli elementi condivisi non genereranno più IndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
  • FragmentManager non si arresterà più in modo anomalo quando tenti di nascondere un frammento di rimozione. (I573dd, b/183634730)
  • Il controllo lint OnCreateDialogIncorrectCallback non andrà più in crash durante la valutazione di una variabile di primo livello. (0a9efa, b/189967522)

Versione 1.4.0-alpha02

2 giugno 2021

androidx.fragment:fragment:1.4.0-alpha02, androidx.fragment:fragment-ktx:1.4.0-alpha02 e androidx.fragment:fragment-testing:1.4.0-alpha02 sono stati rilasciati. La versione 1.4.0-alpha02 contiene questi commit.

Nuove funzionalità

  • FragmentStrictMode ora registrerà sempre le violazioni quando la registrazione è abilitata tramite FragmentManager, indipendentemente dai criteri della modalità StrictMode attualmente in uso. (I02df6, b/187872638)
  • FragmentStrictMode ora supporta l'esenzione di classi Fragment particolari dalla Violations in modalità StrictMode, consentendo a questa classe di evitare eventuali sanzioni. (Ib4e5d, b/184786736)

  • La classe FragmentStrictMode Violation è stata espansa per aggiungere informazioni sulla struttura in base a ogni violazione. In questo modo puoi verificare esattamente la causa della violazione insieme al frammento che la ha causata (If5118, b/187871150), ogni Violation contiene quanto segue:

    • WrongFragmentContainerViolation ora contiene il ViewGroup a cui Fragment stava tentando di essere aggiunto. (I83c75, b/187871150)
    • TargetFragmentUsageViolation è stato espanso in SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation e GetTargetFragmentRequestCodeUsageViolation, con SetTargetFragmentUsageViolation contenente il frammento di destinazione e il codice di richiesta. (I741b4, b/187871150)
    • SetUserVisibleHintViolation ora contiene il valore booleano passato a setUserVisibleHint(). (I00585, b/187871150)
    • FragmentTagUsageViolation ora contiene il ViewGroup in cui il tag <fragment> tentava di inserire un fragmento.(I5dbbc, b/187871150)
    • FragmentReuseViolation ora contiene l'ID univoco dell'istanza precedente di Fragment che ha causato la violazione. (I0544d, b/187871150)
    • RetainInstanceUsageViolation ora è astratto e ha due sottoclassi, SetRetainInstanceUsageViolation e GetRetainInstanceUsageViolation, che rappresentano i due casi per il tipo di violazione. (Ic81e5, b/187871150)

Modifiche al comportamento

  • FragmentContainerView ora genera un'eccezione quando si tenta di modificare l'attributo fitsSystemWindow a livello di programmazione o tramite XML. Gli inset devono essere gestiti dalla visualizzazione di ogni singolo frammento. (Ie6651, b/187304502)

Versione 1.4.0-alpha01

18 maggio 2021

androidx.fragment:fragment:1.4.0-alpha01, androidx.fragment:fragment-ktx:1.4.0-alpha01 e androidx.fragment:fragment-testing:1.4.0-alpha01 sono stati rilasciati. La versione 1.4.0-alpha01 contiene questi commit.

Nuove funzionalità

  • FragmentContainerView ora fornisce un metodo getFragment() che restituisce il frammento aggiunto più di recente al contenitore. Utilizza la stessa logica di findFragmentById() con l'ID di FragmentContainerView, ma consente di concatenare la chiamata. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • Aggiunta FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} per specificare se attivare l'animazione di transizione dell'attività standard presa dal tema nella transizione dei fragment. (I46652)

Più back stack

FragmentManager mantiene un back stack costituito da transazioni di frammenti che utilizzano addToBackStack(). In questo modo puoi estrarre queste transazioni e tornare allo stato precedente, utilizzando i meccanismi per salvare lo stato con i fragment per consentire ai fragment di ripristinare il proprio stato in modo appropriato.

Questa release amplia questi meccanismi fornendo due nuove API FragmentManager: saveBackStack(String name) e restoreBackStack(String name). Queste API utilizzano lo stesso name di addToBackStack() per salvare lo stato di FragmentTransaction e di ogni frammento aggiunto in queste transazioni e consentono di ripristinare in un secondo momento le transazioni e i relativi frammenti con il loro stato intatto. In questo modo puoi "scambiare" in modo efficace più backstack salvando il backstack corrente e ripristinando un backstack salvato.

saveBackStack() funziona in modo simile a popBackStack() in quanto è asincrono e comporta l'inversione (l'eliminazione) di tutte le transazioni di frammenti con quel nome specifico e la distruzione e la rimozione di tutti i frammenti aggiunti, ma differisce per alcuni aspetti importanti:

  • saveBackStack() è sempre inclusivo.
  • A differenza di popBackStack(), che estrae tutte le transazioni dal back stack se il nome specificato non viene trovato nel back stack o se viene fornito un nome null, saveBackStack() non esegue alcuna operazione se non hai eseguito il commit di una transazione di frammenti utilizzando addToBackStack() con quel nome esatto e non null.
  • Lo stato di tutti i frammenti aggiunti da queste transazioni viene salvato. Ciò significa che lo stato della visualizzazione di ogni frammento viene memorizzato, viene chiamato onSaveInstanceState() di ogni frammento e lo stato viene ripristinato e tutte le istanze ViewModel associate a questi frammenti vengono conservate (e onCleared() non viene chiamato).

Le transazioni frammentate che possono essere utilizzate con saveBackStack() devono soddisfare determinati criteri:

  • Ogni transazione di frammento deve utilizzare setReorderingAllowed(true) per garantire che le transazioni possano essere ripristinate come singola operazione atomica.
  • Il set di transazioni salvate deve essere autonomo (ovvero non deve fare riferimento esplicito a frammenti al di fuori di questo set di transazioni) per garantire che possano essere ripristinate in un secondo momento, indipendentemente dalle modifiche apportate al back stack nel frattempo.
  • Nessun frammento salvato può essere un frammento conservato o avere un frammento conservato nel proprio insieme transitivo di frammenti figlio per garantire che FragmentManager non restituisca riferimenti a frammenti salvati dopo il salvataggio del back stack.

Analogamente a saveBackStack(), restoreBackStack() non fa nulla se non hai chiamato in precedenza saveBackStack() con lo stesso nome. (b/80029773)

Fragment StrictMode

Le API FragmentStrictMode forniscono controlli runtime che ti consentono di verificare che la tua app o le librerie da cui dipende non chiamino API frammenti ritirate. Quando viene rilevata una violazione, puoi scegliere di stampare un messaggio di log, attivare il tuo listener personalizzato o arrestare l'app. Il FragmentStrictMode.Policy che controlla quali controlli sono abilitati e quali "penalità" vengono attivate può essere impostato su un FragmentManager tramite il nuovo metodo setStrictModePolicy(). Questo criterio si applica a FragmentManager e in modo transitivo a tutti i gestori di frammenti secondari che non impostano un proprio criterio univoco. (#123, #131, #150, b/143774122)

  • detectFragmentReuse() rileva se un'istanza Fragment rimossa in precedenza viene riaggiunta a un FragmentManager. Non devi mai interagire con un'istanza Fragment o conservarne un riferimento dopo che è stata eliminata e rimossa da un FragmentManager. (#142, b/153738653)
  • detectFragmentTagUsage() rileva quando utilizzi il tag <fragment> nel file XML del layout. Devi sempre utilizzare FragmentContainerView quando aumenti le dimensioni dei frammenti come parte del layout. (#141, b/153738235)
  • detectWrongFragmentContainer() rileva quando aggiungi un frammento a un contenitore che non è un FragmentContainerView. Devi sempre utilizzare FragmentContainerView come contenitore per i fragment nel layout. (#146, b/181137036)
  • detectRetainInstanceUsage() rileva quando utilizzi le API setRetainInstance() o getRetainInstance() deprecate. (#140, b/153737954)
  • detectSetUserVisibleHint() rileva quando utilizzi l'API setUserVisibleHint() deprecata. (#136, b/153738974)
  • detectTargetFragmentUsage() rileva quando utilizzi le API setTargetFragment(), getTargetFragment() o getTargetRequestCode() obsolete. (#139, b/153737745)

Modifiche alle API

Nuovi controlli Lint

  • Il controllo UseGetLayoutInflater Lint ora avvisa quando si utilizza LayoutInflater.from(Context) all'interno di un DialogFragment. Devi sempre utilizzare il metodo getLayoutInflater() del frammento di dialogo per ottenere il valore appropriato per LayoutInflater. (#156, b/170781346)
  • Il controllo lint DialogFragmentCallbacksDetector ora avvisa quando si chiama setOnCancelListener o setOnDismissListener nel metodo onCreateDialog() di un DialogFragment. Questi listener sono di proprietà di DialogFragment e devi eseguire l'override di onCancel() e onDismiss() per ricevere questi callback. (#171, b/181780047, b/187524311)

Correzioni di bug

  • Da Fragment 1.3.4: è stato corretto un bug di regressione introdotto in Fragment 1.3.3 quando si utilizza l'API ViewTreeViewModelStoreOwner.get() con ViewModelProvider o il metodo Jetpack Compose di viewModel() all'interno di un fragment. Questi casi d'uso ora utilizzano correttamente ViewModelProvider.Factory fornito dal tuo fragment se esegue l'override di getDefaultViewModelProviderFactory() (come fanno i fragment annotati con @AndroidEntryPoint quando utilizzano Hilt). Se non esegui l'override di questo metodo, viene creato un SavedStateViewModelFactory che salva e ripristina il suo stato insieme alla visualizzazione del fragment come factory predefinita. (I5cbfa, b/186097368)
  • A partire da Fragment 1.3.4: quando si utilizza FragmentContainerView sull'API 29, gli inset non verranno più inviati a tempo indeterminato, risolvendo i problemi relativi alle istanze BottomNavigationBar e FloatingActionButton. (I1bb78, b/186012452)
  • A partire da Fragment 1.3.4: ora puoi recuperare il tuo Parcelable dal bundle dei risultati del fragment dopo l'interruzione del processo. (I65932, b/187443158)
  • Da Fragment 1.3.4: quando esegui una transizione di elementi condivisi su un ViewGroup, se ViewGroup ha transitionGroup impostato su false, ora la transizione avverrà correttamente. (I99675)

Contributo esterno

Versione 1.3

Versione 1.3.6

21 luglio 2021

androidx.fragment:fragment:1.3.6, androidx.fragment:fragment-ktx:1.3.6 e androidx.fragment:fragment-testing:1.3.6 sono stati rilasciati. La versione 1.3.6 contiene questi commit.

Correzioni di bug

  • Da Frammento 1.4.0-alpha03: l'FragmentManager non si arresterà più in modo anomalo quando tenti di nascondere un frammento di rimozione. (I573dd, b/183634730)
  • Ora la visualizzazione del fragment è impostata correttamente su GONE quando si utilizza hide() e la visualizzazione principale ha transitionGroup=”true” impostato. (aosp/1766655, b/193603427)
  • FragmentActivity ora sblocca sempre lo stato salvato come prima operazione nei callback del ciclo di vita che esegue l'override. (I6db7a)

Aggiornamento delle dipendenze

Versione 1.3.5

16 giugno 2021

androidx.fragment:fragment:1.3.5, androidx.fragment:fragment-ktx:1.3.5 e androidx.fragment:fragment-testing:1.3.5 sono stati rilasciati. La versione 1.3.5 contiene questi commit.

Correzioni di bug

  • È stata corretta una regressione nelle transizioni degli elementi condivisi introdotta in Fragment 1.3.4 da aosp/1679887. I fragment ora gestiscono correttamente i gruppi di transizione (impostati direttamente tramite transitionGroup="true" o indirettamente tramite transitionName o background) e gli elementi condivisi non genereranno più IndexOutOfBoundsException. (I16484, b/188679569, b/188969304)

Versione 1.3.4

18 maggio 2021

androidx.fragment:fragment:1.3.4, androidx.fragment:fragment-ktx:1.3.4 e androidx.fragment:fragment-testing:1.3.4 sono stati rilasciati. La versione 1.3.4 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug di regressione introdotto in Fragment 1.3.3 quando si utilizza l'API ViewTreeViewModelStoreOwner.get() con ViewModelProvider o il metodo Jetpack Compose di viewModel() all'interno di un fragment quando si utilizza Hilt. Questi casi d'uso ora utilizzano correttamente ViewModelProvider.Factory fornito dal tuo frammento se esegue l'override di getDefaultViewModelProviderFactory() (come fanno i frammenti annotati @AndroidEntryPoint). Se non esegui l'override di questo metodo, viene creato un SavedStateViewModelFactory che salva e ripristina il suo stato insieme alla visualizzazione del fragment come factory predefinita. (I5cbfa, b/186097368)
  • Quando utilizzi FragmentContainerView sull'API 29, gli inset non vengono più inviati indefinitamente, risolvendo i problemi con le istanze BottomNavigationBar e FloatingActionButton. (I1bb78, b/186012452)
  • Ora puoi recuperare il tuo Parcelable dal bundle dei risultati del fragment dopo l'interruzione del processo. (I65932, b/187443158)
  • Quando si esegue una transizione di elementi condivisi su un ViewGroup, se ViewGroup ha transitionGroup impostato su false, ora la transizione avverrà correttamente. (I99675)

Versione 1.3.3

21 aprile 2021

androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 e androidx.fragment:fragment-testing:1.3.3 sono stati rilasciati. La versione 1.3.3 contiene questi commit.

Nuove funzionalità

  • L'utilizzo di SavedStateViewModelFactory ora funziona se utilizzato con SavedStateRegistryOwner restituito utilizzando ViewTreeSavedStateRegistryOwner.get() con la visualizzazione del fragmento. (I21acf, b/181577191)

Correzioni di bug

  • È stata corretta una regressione introdotta in Fragment 1.3.2 che impediva l'esecuzione delle animazioni popEnter quando veniva estratto uno FragmentTransaction che includeva un'operazione setPrimaryNavFragment, come quelle utilizzate da NavHostFragment. (I38c87, b/183877426)
  • FragmentContainerView ora garantisce che a ogni Fragment venga inviato un nuovo insieme di WindowInsets, in modo che ogni frammento possa ora utilizzare in modo indipendente gli inset. (I63f68, b/172153900)
  • DialogFragment ora gestisce correttamente i casi in cui un frammento secondario viene aggiunto a un contenitore con lo stesso ID di un contenitore nella classe Dialog personalizzata, risolvendo i problemi della gerarchia di oggetti View quando vengono riutilizzati ID utilizzati internamente da finestre di dialogo come BottomSheetDialog. (Ie6279, b/180021387)
  • FragmentManager.dump() ora rientra correttamente il primo frammento nell'elenco dei frammenti attivi. (If5c33, b/183705451)

Nuove correzioni di bug di State Manager

  • Il nuovo gestore dello stato dei fragment ora gestisce correttamente le transizioni di uscita con le operazioni di nascondimento. (I9e4de, b/184830265)

Versione 1.3.2

24 marzo 2021

androidx.fragment:fragment:1.3.2, androidx.fragment:fragment-ktx:1.3.2 e androidx.fragment:fragment-testing:1.3.2 sono stati rilasciati. La versione 1.3.2 contiene questi commit.

Nuove correzioni di bug di State Manager

  • Quando esegui contemporaneamente le operazioni popBackStack() e commit(), l'ultima operazione imposta la direzione di tutte le animazioni anziché eseguire alcune animazioni di comparsa e alcune animazioni di ingresso. (I7072e, b/181142246)
  • Le visualizzazioni all'interno di una gerarchia di elementi condivisi non avranno più il nome della transizione cancellato durante una transizione di elementi condivisi. (I4d4a6, b/179934757)

Aggiornamenti delle dipendenze

  • Il frammento ora dipende da Activity 1.2.2, che risolve un problema con il controllo lint di InvalidFragmentVersionForActivityResult di Activity quando si utilizza Fragment 1.3.1 o versioni successive.
  • Il frammento ora dipende da Lifecycle 2.3.1.

Versione 1.3.1

10 marzo 2021

androidx.fragment:fragment:1.3.1, androidx.fragment:fragment-ktx:1.3.1 e androidx.fragment:fragment-testing:1.3.1 sono stati rilasciati. La versione 1.3.1 contiene questi commit.

Nuove funzionalità

  • Ora le finestre di dialogo all'interno di un DialogFragment possono accedere ai proprietari di ViewTree tramite DecorView, garantendo che DialogFragment possa essere utilizzato con ComposeView. (Ib9290, b/180691023)

Correzioni di bug

  • I fragment inseriti in un'attività RESUMED utilizzando FragmentContainerView vengono ora visualizzati correttamente dopo una modifica della configurazione. (Ie14c8, b/180538371)
  • Non è più presente un } aggiuntivo alla fine del frammento toString() (I54705, b/177761088)
  • I metodi sottoposti a override in FragmentActivity ora ereditano correttamente il javaDoc del metodo di base (I736ce, b/139548782)
  • La documentazione di setFragmentResult e setFragmentResultListener ha aggiornato la documentazione dei parametri per indicare che non accettano più i valori nullabili (I990ba, b/178348386)

Nuove correzioni di bug di State Manager

  • È stata corretta una perdita di memoria nei fragment causata da mFocusedView (Ib4e9e, b/179925887)
  • I fragment ora chiamano correttamente onCreateOptionsMenu quando si utilizzano le transazioni di visualizzazione/occultamento (I8bce8, b/180255554)
  • I frammenti secondari con transizioni che iniziano prima del layout del frammento ora raggiungono correttamente RESUMED (Ic11e6, b/180825150)
  • I frammenti aumentati utilizzando il tag <fragment> ora verranno sempre visualizzati in RESUMED (I452ac, (I9fa49)

Aggiornamenti delle dipendenze

Versione 1.3.0

10 febbraio 2021

androidx.fragment:fragment:1.3.0, androidx.fragment:fragment-ktx:1.3.0 e androidx.fragment:fragment-testing:1.3.0 sono stati rilasciati. La versione 1.3.0 contiene questi commit.

Modifiche importanti dalla versione 1.2.0

  • Nuovo State Manager: una riscrittura significativa degli elementi interni di FragmentManager ha risolto numerosi problemi relativi all'invio di eventi del ciclo di vita, animazioni e transizioni e alla gestione dei fragment posticipati.
  • Integrazione dell'API Activity Result: è stato aggiunto il supporto dell'API ActivityResultRegistry introdotta in Activity 1.2.0 per gestire i flussi startActivityForResult()+onActivityResult() e requestPermissions()+onRequestPermissionsResult() senza eseguire l'override dei metodi nel fragment, oltre a fornire hook per testare questi flussi. Consulta la sezione aggiornata Ottenere un risultato da un'attività.

    • Questa release corregge una serie di problemi relativi ai codici di richiesta non validi e all'invio di richieste di autorizzazione che impediscono il funzionamento dell'API Activity Result nelle versioni precedenti di FragmentActivity. Per utilizzare le API Activity Result in un FragmentActivity o AppCompatActivity, devi eseguire l'upgrade a Fragment 1.3.0.
  • API Fragment Result: è stato aggiunto il supporto per il trasferimento dei risultati tra due frammenti tramite nuove API su FragmentManager. Funziona per i frammenti di gerarchia (padre/figlio), i DialogFragment e i frammenti in Navigation e garantisce che i risultati vengano inviati al frammento solo quando è almeno STARTED. Le API dei fragment di destinazione sono state ritirate a favore di queste nuove API. Consulta Ottenere risultati utilizzando l'API Fragment Result.

  • FragmentOnAttachListener: il callback onAttachFragment() su FragmentActivity e Fragment è stato ritirato. È stato aggiunto un nuovo FragmentOnAttachListener per fornire un'alternativa più flessibile, consentendo la delega di onAttachFragment() a listener separati e testabili e il supporto per l'aggiunta di un listener a FragmentManager diversi da FragmentManager secondari diretti.

  • FragmentScenario Miglioramenti: la classe FragmentScenario dell'artefatto fragment-testing è stata riscritta in Kotlin e ha ricevuto una serie di miglioramenti:

    • FragmentScenario ora utilizza setMaxLifecycle() per implementare moveToState(), garantendo un comportamento coerente su tutti i livelli API e disaccoppiando lo stato del fragment dall'attività sottostante.
    • FragmentScenario ora supporta l'impostazione di un Lifecycle.State iniziale per supportare l'asserzione dello stato del fragment prima di passare a ogni Lifecycle.State per la prima volta.
    • Ora esiste un'alternativa all'API FragmentScenario di onFragment sotto forma del metodo di estensione reificato Kotlin withFragment che consente di restituire un valore. In particolare, genera nuovamente le eccezioni sollevate nel blocco specificato.
  • ViewTree Support: Fragment ora supporta le API ViewTreeLifecycleOwner.get(View), ViewTreeViewModelStoreOwner.get(View) e ViewTreeSavedStateRegistryOwner aggiunte in Lifecycle 2.3.0 e SavedState 1.1.0 in modo che restituisca il fragment come ViewModelStoreOwner e un SavedStateRegistryOwner e un LifecycleOwner collegati al ciclo di vita della visualizzazione del fragment quando si utilizza un View all'interno di un Fragment.

  • Modifiche all'animazione TRANSIT_: gli effetti predefiniti dei frammenti, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE e TRANSIT_FRAGMENT_FADE, ora utilizzano Animator anziché Animation. Le risorse utilizzate per creare questi animatori sono ora private.

  • Ritiro di setRetainInstance(): il metodo setRetainInstance() sui fragment è stato ritirato. Con l'introduzione di ViewModel, gli sviluppatori dispongono di un'API specifica per conservare lo stato che può essere associato ad attività, frammenti e grafici di navigazione. In questo modo, gli sviluppatori possono utilizzare un fragment normale, non mantenuto, e mantenere separato lo stato specifico che vogliono conservare, evitando una fonte comune di perdite e mantenendo le proprietà utili di una singola creazione e distruzione dello stato mantenuto (ovvero il costruttore di ViewModel e il callback onCleared() che riceve).

  • Deprecazione dell'adattatore ViewPager 1: con il rilascio di ViewPager2 1.0.0, le classi FragmentPagerAdapter e FragmentStatePagerAdapter per l'interazione con ViewPager sono state ritirate. Consulta Eseguire la migrazione da ViewPager a ViewPager2.

Versione 1.3.0-rc02

27 gennaio 2021

androidx.fragment:fragment:1.3.0-rc02, androidx.fragment:fragment-ktx:1.3.0-rc02 e androidx.fragment:fragment-testing:1.3.0-rc02 sono stati rilasciati. La versione 1.3.0-rc02 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui un frammento di dialogo principale DialogFragment veniva visualizzato sopra un frammento di dialogo secondario DialogFragment dopo una modifica alla configurazione; ora i frammenti di dialogo secondari vengono sempre visualizzati sopra un frammento di dialogo principale. (I30806, b/177439520)
  • È stato risolto il problema per cui l'esecuzione di un'operazione hide con un Animation causava il lampeggio del frammento di nascondimento alla fine dell'animazione. (I57e22, b/175417675)
  • I Fragment con transizioni aggiunte prima che venga collegata la gerarchia di oggetti View ora raggiungono correttamente RESUMED. (I1fc1d, b/177154873)

Nuove correzioni di bug di State Manager

  • La visualizzazione del fragmento Lifecycle ora gestisce correttamente i casi in cui la visualizzazione del fragmento viene eliminata prima che Lifecycle raggiunga CREATED, evitando eccezioni che indicano "nessun evento inattivo da INITIALIZED". (eda2bd, b/176138645)
  • I frammenti che utilizzano un Animator ora vengono visualizzati nell'ordine corretto quando si utilizza FragmentContainerView. (Id9aa3, b/176089197)

Versione 1.3.0-rc01

16 dicembre 2020

androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 e androidx.fragment:fragment-testing:1.3.0-rc01 sono stati rilasciati. La versione 1.3.0-rc01 contiene questi commit.

Correzioni di bug

  • onPrepareOptionsMenu() ora segue la stessa logica di onCreateOptionsMenu() e non viene più chiamato quando un frammento principale chiama setMenuVisibility(false). (Id7de8, b/173203654)

Nuove correzioni di bug di State Manager

  • È stato risolto il problema di perdita e artefatto visivo durante l'aggiunta di un frammento con un Animation a un FragmentContainerView e l'interruzione di questa aggiunta con un'operazione di pop. (I952d8)
  • È stato risolto un problema per cui la visualizzazione del frammento rimaneva nella gerarchia di oggetti View se veniva sostituita durante i metodi onCreate() o onViewCreated(). (I8a7d5)
  • Lo stato attivo viene ora ripristinato correttamente nelle visualizzazioni radice dei fragment quando vengono ripristinate. (Ifc84b)
  • La combinazione di operazioni di estrazione e sostituzione nella stessa transazione di frammenti ora mostra le animazioni corrette (Ifd4e4, b/170328691)

Versione 1.3.0-beta02

2 dicembre 2020

androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 e androidx.fragment:fragment-testing:1.3.0-beta02 sono stati rilasciati. La versione 1.3.0-beta02 contiene questi commit.

Nuove funzionalità

  • FragmentScenario è stato completamente convertito in Kotlin mantenendo la compatibilità binaria e del codice sorgente tramite l'utilizzo delle interfacce funzionali di Kotlin 1.4 per FragmentAction. (I19d31)

Modifiche al comportamento

  • Le FragmentContainerView che non aumentano un frammento utilizzando l'attributo class o android:name ora possono essere utilizzate al di fuori di un FragmentActivity. (Id4397, b/172266337)
  • Il tentativo di impostare il ciclo di vita massimo di un frammento su DESTROYED ora genererà un IllegalArgumentException (Ie7651, b/170765622)
  • L'inizializzazione di un FragmentScenario con uno stato DESTROYED ora genererà un IllegalArgumentException (I73590, b/170765622)

Nuove correzioni di bug di State Manager

  • È stato risolto un problema per cui la visualizzazione non raggiungeva il suo stato finale se interrompevi una transizione di frammento che utilizzava Animator o una delle opzioni TRANSIT_FRAGMENT_. (I92426, b/169874632)
  • Risolto un problema che impediva la distruzione corretta dei fragment con un Animation in uscita. (I83d65)
  • L'uscita dai frammenti con gli effetti invertiti ora annulla e riavvia correttamente con l'effetto di entrata appropriato. (I62226, b/167092035)
  • Risolto un problema per cui l'uscita Animator di un hide() non veniva eseguita. (Id7ffe)
  • Ora i frammenti vengono visualizzati correttamente quando vengono posticipati e poi avviati immediatamente. (Ie713b, b/170022857)
  • I frammenti che rimuovono la visualizzazione messa a fuoco durante un'animazione non tenteranno più di ripristinare la messa a fuoco sulla visualizzazione staccata una volta raggiunto RESUMED (I38c65, b/172925703)

Contributo esterno

  • FragmentFactory ora memorizza nella cache le classi di frammenti separatamente per le diverse istanze ClassLoader. Grazie, Simon Schiller. (#87, b/113886460)

Versione 1.3.0-beta01

1° ottobre 2020

androidx.fragment:fragment:1.3.0-beta01, androidx.fragment:fragment-ktx:1.3.0-beta01 e androidx.fragment:fragment-testing:1.3.0-beta01 sono stati rilasciati. La versione 1.3.0-beta01 contiene questi commit.

Nuove funzionalità

  • setMaxLifecycle() ora supporta l'impostazione dello stato Lifecycle su INITIALIZING, a condizione che il frammento non sia stato spostato su CREATED. (b/159662173)

Modifiche alle API

Modifiche al comportamento

  • I file di risorse dei frammenti sono stati resi privati correttamente. (aosp/1425237)

Correzioni di bug

  • I fragment visualizzati utilizzando il tag <fragment> ora attenderanno correttamente che le loro visualizzazioni vengano aggiunte a un contenitore prima di passare a STARTED (I02f4c)
  • I frammenti che sono visibili e poi setMaxLifecycle() a CREATED ora eseguono correttamente gli effetti di uscita. (b/165822335)
  • La rimozione di un frammento staccato che non viene aggiunto al back stack non causa più una perdita di memoria. Per gentile concessione di Nicklas Ansman Giertz. (b/166489383)
  • I fragment attivi ora avranno sempre un FragmentManager non nullo e i fragment con un FragmentManager non nullo verranno sempre considerati attivi. (aosp/1422346)
  • Gli effetti predefiniti dei frammenti, TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE e TRANSIT_FRAGMENT_FADE, ora utilizzano Animator anziché Animation. (b/166155034)

Nuove correzioni di bug di State Manager

  • Ora i fragment ripristinano correttamente lo stato di messa a fuoco della visualizzazione subito prima di iniziare l'animazione. (Icc256)
  • I frammenti che hanno solo una transizione di elementi condivisi ora completano correttamente i loro effetti speciali, il che significa che si spostano effettivamente nel loro stato finale (Iaebc7, b/166658128)
  • Le visualizzazioni dei fragment vengono ora sempre rimosse dal container prima di essere eliminate. (Id5876)
  • Il nuovo gestore dello stato ora rimuove in modo coerente la visualizzazione del frammento in uscita prima di aggiungere quella in entrata. (I41a6e)
  • Le modifiche esplicite alla visibilità di una visualizzazione di frammento ora vengono rispettate dal nuovo gestore dello stato. Ciò significa che se imposti la visualizzazione di un frammento di ingresso su INVISIBLE prima dell'inizio dell'animazione, questo rimarrà effettivamente invisibile. (b/164481490)
  • I fragment ora danno la priorità a Animators rispetto a Animations, il che significa che un fragment con entrambi eseguirà solo Animator e ignorerà Animation. (b/167579557)
  • Il nuovo gestore dello stato non causa più il lampeggio dei fragment quando si utilizzano le animazioni di ingresso. (b/163084315)

Problema noto

Quando utilizzi il nuovo gestore di stati, se premi Indietro durante un effetto speciale di ingresso anziché tornare al fragment precedente, il vecchio fragment non viene mai riaggiunto, con conseguente visualizzazione di una schermata vuota. (b/167259187, b/167092035, b/168442830)

Versione 1.3.0-alpha08

19 agosto 2020

androidx.fragment:fragment:1.3.0-alpha08, androidx.fragment:fragment-ktx:1.3.0-alpha08 e androidx.fragment:fragment-testing:1.3.0-alpha08 sono stati rilasciati. La versione 1.3.0-alpha08 contiene questi commit.

Nuovo State Manager

Questa release include un refactoring importante della gestione dello stato interno di FragmentManager, che influisce sull'invio di metodi del ciclo di vita, animazioni e transizioni e sulla gestione delle transazioni posticipate. Questa opzione è attiva per impostazione predefinita. Per ulteriori dettagli, consulta il post del blog Frammenti: ricostruire gli elementi interni. (b/139536619, b/147749580)

  • Un'API sperimentale in FragmentManager.enableNewStateManager(boolean) può essere utilizzata per controllare se FragmentManager utilizza il nuovo gestore di stato. (I7b6ee)

I seguenti problemi vengono risolti solo quando si utilizza il nuovo gestore di stato:

  • Il frammento precedente di un'operazione replace ora viene interrotto correttamente prima dell'avvio del nuovo frammento. (b/161654580)
  • Ora i frammenti impediscono l'esecuzione di più animazioni in competizione sugli stessi frammenti, evitando casi in cui un Animation esegue l'override di tutti gli effetti Transition o in cui vengono eseguiti sia un Animator che un Transition su un singolo frammento. (b/149569323)
  • Ora vengono eseguiti enterTransition e exitTranstion di tutti i frammenti in entrata e in uscita, anziché solo l'ultimo frammento in entrata e il primo frammento in uscita. (b/149344150)
  • I frammenti posticipati non rimangono più bloccati nello stato CREATED, ma passano allo stato STARTED insieme agli altri frammenti. (b/129035555)
  • Risolto un problema per cui FragmentManager eseguiva le operazioni in modo errato quando venivano combinate una transazione riordinata posticipata e una transazione non riordinata. (b/147297731)
  • L'apertura simultanea di più frammenti non comporterà più la visualizzazione temporanea dei frammenti intermedi quando vengono posticipati. (b/37140383)
  • FragmentManager ora restituisce i frammenti corretti quando viene chiamato findFragmentById() o findFragmentByTag() dall'interno del callback onAttachFragment(). (b/153082833)
  • I fragment non chiamano più onCreateView() sui fragment che vengono eliminati quando il fragment che li sostituisce viene posticipato. (b/143915710)
  • Il messaggio di errore visualizzato quando si tenta di combinare le istanze del framework Transition e di AndroidX Transition ora menziona il fragment con la transizione non valida. (b/155574969)

Modifiche al comportamento

  • Ora puoi chiamare launch() su un ActivityResultLauncher nel metodo del ciclo di vita onCreate() di un fragmento. (b/161464278)
  • La chiamata a registerForActivityResult() dopo onCreate() ora genera un'eccezione che indica che questa operazione non è consentita, anziché non restituire risultati dopo una modifica della configurazione. (b/162255449)
  • FragmentActivity ora utilizza l'API OnContextAvailableListener introdotta in Activity 1.2.0-alpha08 per ripristinare lo stato di FragmentManager. Tutti i listener aggiunti alle sottoclassi di FragmentActivity verranno eseguiti dopo questo listener. (I513da)

Correzioni di bug

  • I valori ActivityOptions passati durante l'utilizzo di startIntentSenderForResult() vengono ora rispettati. (b/162247961)

Problema noto

  • Quando utilizzi il nuovo gestore dello stato, l'impostazione diretta della visibilità della visualizzazione principale del fragment dopo onViewCreated() e prima di onResume() comporta l'override della visibilità impostata da FragmentManager, che controlla la visibilità della visualizzazione principale. Come soluzione alternativa, devi sempre utilizzare le operazioni hide() e show() per modificare la visibilità del frammento. (b/164481490)

Versione 1.3.0-alpha07

22 luglio 2020

androidx.fragment:fragment:1.3.0-alpha07, androidx.fragment:fragment-ktx:1.3.0-alpha07 e androidx.fragment:fragment-testing:1.3.0-alpha07 sono stati rilasciati. La versione 1.3.0-alpha07 contiene questi commit.

Nuove funzionalità

  • FragmentScenario ora supporta l'impostazione di uno stato del ciclo di vita iniziale di CREATED, STARTED o RESUMED anziché spostare sempre il fragment nello stato RESUMED. (b/159662750)
  • È stata aggiunta un'alternativa all'API FragmentScenario di onFragment sotto forma di metodo di estensione reificato Kotlin withFragment che consente di restituire un valore. In particolare, genera nuovamente le eccezioni sollevate nel blocco specificato. (b/158697631)

Modifiche al comportamento

  • FragmentScenario ora utilizza setMaxLifecycle() per implementare moveToState(), garantendo un comportamento coerente su tutti i livelli API e disaccoppiando lo stato del fragment dall'attività sottostante. (b/156527405)
  • SavedStateRegistryOwner restituito da ViewTreeSavedStateRegistryOwner è ora associato al ciclo di vita della visualizzazione del frammento. In questo modo, lo stato viene salvato e ripristinato contemporaneamente alla visualizzazione del fragment. (b/158503763)

Correzioni di bug

  • Ora i fragment attendono che la visualizzazione del fragment venga collegata prima di chiamare ViewCompat.requestApplyInsets(), evitando i casi in cui la richiesta di rientro veniva eliminata. (b/158095749)
  • La chiamata a clearFragmentResultListener ora cancella correttamente l'observer del ciclo di vita. (b/159274993)

Versione 1.3.0-alpha06

10 giugno 2020

androidx.fragment:fragment:1.3.0-alpha06, androidx.fragment:fragment-ktx:1.3.0-alpha06 e androidx.fragment:fragment-testing:1.3.0-alpha06 sono stati rilasciati. La versione 1.3.0-alpha06 contiene questi commit.

Nuove funzionalità

  • Il callback onAttachFragment() su FragmentActivity e Fragment è stato deprecato. È stato aggiunto un nuovo FragmentOnAttachListener per fornire un'alternativa più flessibile, consentendo la delega di onAttachFragment() a listener separati e testabili e il supporto per l'aggiunta di un listener a FragmentManager diversi da FragmentManager figlio diretto. (I06d3d)

Correzioni di bug

  • Ora lo stato della visualizzazione dei fragment genitore viene ripristinato prima di quello dei fragment figlio, risolvendo un problema di ordinamento visivo dopo una modifica della configurazione quando un DialogFragment mostra un altro DialogFragment come fragment figlio. (b/157195715)
  • Risolto un problema per cui il controllo lint UseRequireInsteadOfGet non gestiva correttamente gli utilizzi concatenati degli operatori ?. e !!. (b/157677616)

Versione 1.3.0-alpha05

20 maggio 2020

androidx.fragment:fragment:1.3.0-alpha05, androidx.fragment:fragment-ktx:1.3.0-alpha05 e androidx.fragment:fragment-testing:1.3.0-alpha05 sono stati rilasciati. La versione 1.3.0-alpha05 contiene questi commit.

Nuove funzionalità

Modifiche alle API

  • Le API setFragmentResult() e setFragmentResultListener() ora accettano rispettivamente Bundle e FragmentResultListener non nulli. Per cancellare in modo esplicito un risultato o un listener impostato in precedenza, utilizza i nuovi metodi clearFragmentResult() e clearFragmentResultListener(). (b/155416778)
  • Le estensioni Kotlin setFragmentResultListener() che accettano un'espressione lambda ora sono contrassegnate come inline. (b/155323404)

Modifiche al comportamento

  • startActivityForResult(), startIntentSenderForResult() e requestPermissions, precedentemente ritirati il giorno Fragment, ora utilizzano internamente ActivityResultRegistry, eliminando così la limitazione all'utilizzo solo dei bit inferiori (sotto 0xFFFF) per i codici di richiesta quando utilizzi queste API. (b/155518741)

Aggiornamenti della documentazione

  • È stata ampliata la documentazione sui costruttori Fragment(@LayoutRes int) e DialogFragment(@LayoutRes int) per chiarire che devono essere chiamati dal costruttore senza argomenti delle sottoclassi quando si utilizza FragmentFactory predefinito. (b/153042497)

Versione 1.3.0-alpha04

29 aprile 2020

androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 e androidx.fragment:fragment-testing:1.3.0-alpha04 sono stati rilasciati. La versione 1.3.0-alpha04 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il supporto per il passaggio dei risultati tra due frammenti tramite le nuove API su FragmentManager. Funziona per i frammenti di gerarchia (padre/figlio), i DialogFragment e i frammenti in Navigation e garantisce che i risultati vengano inviati al frammento solo quando è almeno STARTED. (b/149787344)

Modifiche alle API

  • Le API dei frammenti di destinazione sono state ritirate. Per passare i dati tra i frammenti, è necessario utilizzare le nuove API Fragment Result. (b/149787344)
  • Le API startActivityForResult()/onActivityResult() e requestPermissions()/onRequestPermissionsResult() su Fragment sono state ritirate. Utilizza le API Activity Result. (aosp/1290887)
  • Modifica che causa interruzione di Activity 1.2.0-alpha04: il metodo prepareCall() è stato rinominato in registerForActivityResult(). (aosp/1278717)

Correzioni di bug

  • L'esecuzione del frammento getViewLifecycleOwner() viene ora interrotta prima della chiamata di onSaveInstanceState(), rispecchiando il comportamento del ciclo di vita del frammento. (b/154645875)
  • La chiamata setMenuVisibility(false) su un frammento ora modifica correttamente la visibilità dei menu forniti dai relativi frammenti secondari. (b/153593580)
  • È stato corretto un illegalStateException durante l'aggiunta di un frammento alla gerarchia di oggetti View di un DialogFragment con FragmentContainerView. (b/154366601)
  • Il metodo getDefaultViewModelProviderFactory() sui fragment non va più in arresto anomalo quando li ospiti al di fuori di un'attività. (b/153762914)

Versione 1.3.0-alpha03

1° aprile 2020

androidx.fragment:fragment:1.3.0-alpha03, androidx.fragment:fragment-ktx:1.3.0-alpha03 e androidx.fragment:fragment-testing:1.3.0-alpha03 sono stati rilasciati. La versione 1.3.0-alpha03 contiene questi commit.

Modifiche alle API

  • I metodi prepareCall su Fragment ora sono final. (b/152439361)

Correzioni di bug

  • È stata corretta una regressione introdotta in Fragment 1.3.0-alpha02 quando si utilizza BottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163)
  • È stato corretto un arresto anomalo durante l'utilizzo di prepareCall da un frammento dopo una modifica alla configurazione. (b/152137004)
  • Risolto un problema per cui le transizioni degli elementi condivisi e di uscita vengono ignorate quando si utilizza setTargetFragment(). (b/152023196)
  • Da Fragment 1.2.4: sono state aggiornate le regole ProGuard di Fragment per consentire l'offuscamento dei frammenti mantenuti. (b/151605338)
  • Da Fragment 1.2.4: è stata disattivata la regola Lint FragmentLiveDataObserve sulle classi DialogFragment poiché il loro ciclo di vita e il ciclo di vita della visualizzazione sono sempre sincronizzati, il che rende sicuro l'utilizzo di this o viewLifecycleOwner quando si chiama observe. (b/151765086)

Modifiche alle dipendenze

  • I fragment dipendono da Activity 1.2.0-alpha03, che ha apportato miglioramenti significativi all'API Activity Result introdotta in Activity 1.2.0-alpha02.

Versione 1.3.0-alpha02

18 marzo 2020

androidx.fragment:fragment:1.3.0-alpha02, androidx.fragment:fragment-ktx:1.3.0-alpha02 e androidx.fragment:fragment-testing:1.3.0-alpha02 sono stati rilasciati. La versione 1.3.0-alpha02 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il supporto per l'API ActivityResultRegistry introdotta in Activity 1.2.0-alpha02 per gestire i flussi startActivityForResult()+onActivityResult() e requestPermissions()+onRequestPermissionsResult() senza eseguire l'override dei metodi nel fragment, oltre a fornire hook per testare questi flussi. Consulta la sezione aggiornata Ottenere un risultato da un'attività. (b/125158199)

Modifiche alle API

  • DialogFragment ora fornisce un costruttore che accetta un @LayoutRes che indica il layout che onCreateView() deve gonfiare per impostazione predefinita. (b/150327080)
  • Il metodo onActivityCreated() è ora deprecato. Il codice che tocca la visualizzazione del frammento deve essere eseguito in onViewCreated() (chiamato immediatamente prima di onActivityCreated()) e l'altro codice di inizializzazione deve essere in onCreate(). Per ricevere un callback in modo specifico al termine dell'onCreate() dell'attività, è necessario registrare un LifeCycleObserver nell'Lifecycle dell'attività in onAttach() e rimuoverlo una volta ricevuto il callback onCreate(). (b/144309266)

Correzioni di bug

  • Da Fragment 1.2.3: è stato corretto un bug in DialogFragment che causava un StackOverflowError durante la chiamata di getLayoutInflater() da onCreateDialog(). (b/117894767, aosp/1258664)
  • Da Fragment 1.2.3: è stato ridotto l'ambito delle regole ProGuard incluse di Fragment per garantire che le classi Fragment inutilizzate possano essere rimosse. (b/149665169)
  • Da Fragment 1.2.3: sono stati corretti i falsi positivi nel controllo Lint UseRequireInsteadOfGet quando si utilizza un nome di variabile locale che ombreggiava il nome della proprietà Kotlin. (b/149891163)
  • Da Fragment 1.2.3: FragmentContainerView non genera più un UnsupportedOperationException per l'utilizzo del costruttore errato nell'anteprima del layout. (b/149707833)

Problemi noti

  • BottomSheetDialogFragment non posiziona più correttamente la finestra di dialogo sullo schermo. (b/151652127)

Versione 1.3.0-alpha01

4 marzo 2020

androidx.fragment:fragment:1.3.0-alpha01, androidx.fragment:fragment-ktx:1.3.0-alpha01 e androidx.fragment:fragment-testing:1.3.0-alpha01 sono stati rilasciati. La versione 1.3.0-alpha01 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il supporto dell'API ViewTreeLifecycleOwner.get(View) aggiunta nel ciclo di vita 2.3.0-alpha01 in modo che restituisca viewLifecycleOwner del fragment come LifecycleOwner per qualsiasi visualizzazione restituita da onCreateView(). (aosp/1182955)

Modifiche alle API

  • Il metodo setRetainInstance() sui frammenti è stato ritirato. Con l'introduzione di ViewModel, gli sviluppatori dispongono di un'API specifica per conservare lo stato che può essere associato ad attività, frammenti e grafici di navigazione. In questo modo, gli sviluppatori possono utilizzare un fragment normale, non mantenuto, e mantenere separato lo stato specifico che vogliono conservare, evitando una fonte comune di perdite e mantenendo le proprietà utili di una singola creazione e distruzione dello stato mantenuto (ovvero il costruttore di ViewModel e il callback onCleared() che riceve). (b/143911815)
  • Con il rilascio di ViewPager2 1.0.0, le classi FragmentPagerAdapter e FragmentStatePagerAdapter per l'interazione con ViewPager sono state ritirate. Consulta Eseguire la migrazione da ViewPager a ViewPager2. (b/145132715)

Correzioni di bug

  • Ora le regole ProGuard dei fragment mantengono correttamente solo i costruttori predefiniti delle classi Fragment utilizzate anziché per tutte le istanze Fragment, correggendo una regressione introdotta in Fragment 1.2.1. (b/149665169
  • Le regole di lint require___() aggiunte nel fragmento 1.2.2 non generano più falsi positivi sulle variabili locali che condividono lo stesso nome delle proprietà Kotlin nascoste (ad es. view). (b/149891163)
  • FragmentContainerView non genera più un UnsupportedOperationException quando si utilizza l'anteprima del layout in Android Studio. (b/149707833)
  • È stato corretto un problema a causa del quale i frammenti conservati aggiunti dopo il salvataggio dello stato non venivano ricreati continuamente e poi distrutti dopo ogni modifica della configurazione. (b/145832397)

Versione 1.2.5

Versione 1.2.5

10 giugno 2020

androidx.fragment:fragment:1.2.5, androidx.fragment:fragment-ktx:1.2.5 e androidx.fragment:fragment-testing:1.2.5 sono stati rilasciati. La versione 1.2.5 contiene questi commit.

Correzioni di bug

  • L'esecuzione del frammento getViewLifecycleOwner() viene ora interrotta prima della chiamata di onSaveInstanceState(), rispecchiando il comportamento del ciclo di vita del frammento. Questa funzionalità è stata rilasciata in precedenza nel frammento 1.3.0-alpha04. (b/154645875)
  • La chiamata setMenuVisibility(false) su un frammento ora modifica correttamente la visibilità dei menu forniti dai relativi frammenti secondari. Questa funzionalità è stata rilasciata in precedenza nel frammento 1.3.0-alpha04. (b/153593580)

Versione 1.2.4

Versione 1.2.4

1° aprile 2020

androidx.fragment:fragment:1.2.4, androidx.fragment:fragment-ktx:1.2.4 e androidx.fragment:fragment-testing:1.2.4 sono stati rilasciati. La versione 1.2.4 contiene questi commit.

Correzioni di bug

  • Sono state aggiornate le regole ProGuard dei fragment per consentire l'offuscamento dei fragment mantenuti. (b/151605338)
  • È stata disattivata la regola Lint sulle classi FragmentLiveDataObserve perché il loro ciclo di vita e il ciclo di vita della visualizzazione sono sempre sincronizzati, il che rende sicuro l'utilizzo di this o viewLifecycleOwner quando si chiama observe.DialogFragment (b/151765086)

Versione 1.2.3

Versione 1.2.3

18 marzo 2020

androidx.fragment:fragment:1.2.3, androidx.fragment:fragment-ktx:1.2.3 e androidx.fragment:fragment-testing:1.2.3 sono stati rilasciati. La versione 1.2.3 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug in DialogFragment che causava un StackOverflowError durante la chiamata a getLayoutInflater() da onCreateDialog(). (b/117894767, aosp/1258665)
  • È stato ridotto l'ambito delle regole ProGuard incluse di Fragment per garantire che le classi Fragment inutilizzate possano essere rimosse. (b/149665169)
  • Sono stati corretti i falsi positivi nel controllo Lint UseRequireInsteadOfGet quando si utilizza un nome di variabile locale che ombreggiava il nome della proprietà Kotlin. (b/149891163)
  • FragmentContainerView non genera più un UnsupportedOperationException per l'utilizzo del costruttore errato nell'anteprima del layout. (b/149707833)

Versione 1.2.2

Versione 1.2.2

19 febbraio 2020

androidx.fragment:fragment:1.2.2, androidx.fragment:fragment-ktx:1.2.2 e androidx.fragment:fragment-testing:1.2.2 sono stati rilasciati. La versione 1.2.2 contiene questi commit.

Nuovi controlli Lint

  • Lint suggerisce di utilizzare viewLifecycleOwner come LifecycleOwner per le chiamate a OnBackPressedDispatcher in onCreateView(), onViewCreated() e onActivityCreated(). (b/142117657)
  • È stato aggiunto un nuovo controllo Lint che verifica che tu stia utilizzando il debugImplementation corretto quando utilizzi l'artefatto fragment-testing. (b/141500106)
  • Ora i frammenti suggeriscono di utilizzare i metodi require___() associati per messaggi di errore più descrittivi anziché checkNotNull(get___()), requireNonNull(get___()) o get___()!! per tutte le API Fragment che includono un equivalente get e require. (aosp/1202883)

Correzioni di bug

  • Sono stati corretti i file ProGuard dei fragment per evitare gli avvisi R8 (b/148963981)
  • È stato migliorato il controllo Lint esistente che suggerisce di utilizzare viewLifecycleOwner quando si utilizza observe per gestire anche la versione del metodo di estensione livedata-ktx di observe. (b/148996309)
  • È stata corretta la formattazione di molti controlli Lint (aosp/1157012)

Contributi esterni

  • Grazie a Zac Sweers per aver contribuito ai controlli require___() Lint per conto di Slack. (aosp/1202883)

Versione 1.2.1

Versione 1.2.1

5 febbraio 2020

androidx.fragment:fragment:1.2.1, androidx.fragment:fragment-ktx:1.2.1 e androidx.fragment:fragment-testing:1.2.1 sono stati rilasciati. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • I fragment aggiunti tramite i metodi add e replace che accettano un'istanza Class (o le versioni reificate di Kotlin) ora hanno il costruttore predefinito mantenuto da ProGuard. (b/148181315)
  • FragmentStatePagerAdapter e FragmentPagerAdapter non rilevano più le eccezioni generate da FragmentManager durante l'esecuzione di finishUpdate(). (aosp/1208711)
  • È stato risolto un problema a causa del quale FragmentManager.findFragment() non funzionava con i frammenti aggiunti tramite il tag <fragment>. (b/147784323)
  • I fragment aumentati utilizzando il tag <fragment> ora ricevono sempre una chiamata a onInflate() prima di onCreate() nel layout. (aosp/1215856)
  • La chiamata a toString() su un'istanza FragmentManager non genera più un NullPointerException quando l'attività è già stata eliminata. (b/148189412)

Modifiche alle dipendenze

Versione 1.2.0

Versione 1.2.0

22 gennaio 2020

androidx.fragment:fragment:1.2.0, androidx.fragment:fragment-ktx:1.2.0 e androidx.fragment:fragment-testing:1.2.0 sono stati rilasciati. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • FragmentContainerView: FragmentContainerView è il contenitore vivamente consigliato per i fragment aggiunti dinamicamente, in sostituzione di FrameLayout o altri layout. Supporta anche gli stessi class, android:name e android:tag facoltativi del tag <fragment>, ma utilizza un FragmentTransaction normale per aggiungere questo frammento iniziale, anziché il percorso del codice personalizzato utilizzato da <fragment>.
  • onDestroyView()Tempistica: ora i fragment attendono il completamento delle animazioni di uscita, delle transizioni del framework di uscita e delle transizioni AndroidX (quando si utilizza Transition 1.3.0) prima di chiamare onDestroyView().
  • Basato sulla classe add() e replace(): sono stati aggiunti nuovi overload di add() e replace() su FragmentTransaction che accettano un Class<? extends Fragment> e un Bundle facoltativo di argomenti. Questi metodi utilizzano FragmentFactory per creare un'istanza del fragment da aggiungere. Anche le estensioni Kotlin che utilizzano tipi reificati (ad es.fragmentTransaction.replace<YourFragment>(R.id.container)) sono state aggiunte a fragment-ktx.
  • Integrazione di Lifecycle ViewModel SavedState: SavedStateViewModelFactory è ora la factory predefinita utilizzata quando si utilizzano by viewModels(), by activityViewModels(), il costruttore ViewModelProvider o ViewModelProviders.of() con un fragment.
  • Nuovi controlli Lint: è stato aggiunto un nuovo controllo Lint che garantisce l'utilizzo di getViewLifecycleOwner() quando si osserva LiveData da onCreateView(), onViewCreated() o onActivityCreated().
  • Ritiro di getFragmentManager(): i metodi getFragmentManager() e requireFragmentManager() in Fragment sono stati ritirati e sostituiti con un unico metodo getParentFragmentManager(), che restituisce FragmentManager non null a cui viene aggiunto Fragment (puoi utilizzare isAdded() per determinare se è sicuro chiamare).
  • Ritiro di FragmentManager.enableDebugLogging(): il metodo statico FragmentManager.enableDebugLogging è stato ritirato. FragmentManager ora rispetta Log.isLoggable() per il tag FragmentManager, consentendoti di attivare la registrazione DEBUG o VERBOSE senza ricompilare l'app.

Problemi noti

  • I fragment a cui viene fatto riferimento solo tramite l'attributo class o android:name in un FragmentContainerView non vengono conservati automaticamente da ProGuard, pertanto devi aggiungere manualmente una regola keep per ogni classe di fragment. (b/142601969)
  • Quando aggiungi un NavHostFragment utilizzando class o android:name in XML con FragmentContainerView, non puoi utilizzare findNavController() in onCreate() della tua attività. (b/142847973)

Versione 1.2.0-rc05

8 gennaio 2020

androidx.fragment:fragment:1.2.0-rc05, androidx.fragment:fragment-ktx:1.2.0-rc05 e androidx.fragment:fragment-testing:1.2.0-rc05 sono stati rilasciati. La versione 1.2.0-rc05 contiene questi commit.

Correzioni di bug

  • È stata corretta una regressione in Fragment 1.2.0-rc04 quando si utilizza il tag <fragment>, che causava la chiamata errata di onViewCreated() durante la distruzione dell'attività. (b/146290333)
  • I frammenti aggiunti con il tag <fragment> ora vengono cancellati correttamente anche quando si trovano nel layout solo a volte (ad esempio, solo nel layout orizzontale). Di conseguenza, questi frammenti vengono ora spostati correttamente in CREATED anche quando non si trovano nel layout, anziché essere istanziati ma non passare mai attraverso alcun metodo del ciclo di vita. (b/145769287)

Versione 1.2.0-rc04

18 dicembre 2019

androidx.fragment:fragment:1.2.0-rc04, androidx.fragment:fragment-ktx:1.2.0-rc04 e androidx.fragment:fragment-testing:1.2.0-rc04 sono stati rilasciati. La versione 1.2.0-rc04 contiene questi commit.

Correzioni di bug

  • Sono state modificate le animazioni per TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE e TRANSIT_FRAGMENT_FADE per evitare problemi visivi. (b/145468417)

Versione 1.2.0-rc03

4 dicembre 2019

androidx.fragment:fragment:1.2.0-rc03, androidx.fragment:fragment-ktx:1.2.0-rc03 e androidx.fragment:fragment-testing:1.2.0-rc03 sono stati rilasciati. La versione 1.2.0-rc03 contiene questi commit.

Correzioni di bug

  • È stata corretta una modifica del comportamento involontaria per cui i frammenti rimossi vengono comunque restituiti da findFragmentById() / findFragmentByTag() durante l'esecuzione delle animazioni/transizioni di uscita. (b/143982969, aosp/1167585)
  • I fragment figlio ora vengono arrestati correttamente prima dei genitori quando l'attività contenitore chiama onSaveInstanceState(). (b/144380645)
  • Risolto un problema per cui le visualizzazioni venivano contrassegnate erroneamente con INVISIBLE dopo la visualizzazione di un frammento nascosto. (b/70793925)
  • Le transizioni degli elementi condivisi dei fragment ora gestiscono le visualizzazioni che sono state ruotate, scalate e così via. (b/142835261)

Aggiornamenti della documentazione

  • È stata chiarita la documentazione sul ritiro di setUserVisibleHint(). (b/143897055)
  • È stata migliorata la documentazione su setFragmentFactory() e getFragmentFactory() per indicare meglio che l'impostazione di un FragmentFactory influirà anche sui FragmentManager secondari. (aosp/1170095)

Modifiche alle dipendenze

  • I fragment ora dipendono da Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03 e Activity 1.1.0-rc03.

Versione 1.2.0-rc02

7 novembre 2019

androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 e androidx.fragment:fragment-testing:1.2.0-rc02 sono stati rilasciati. La versione 1.2.0-rc02 contiene questi commit.

Correzioni di bug

  • In Kotlin, LintFix per l'utilizzo di getViewLifecycleOwner() durante l'osservazione di LiveData da onCreateView(), onViewCreated() o onActivityCreated() (introdotto in Fragment 1.2.0-rc01) ora utilizza la sintassi di accesso alla proprietà Kotlin viewLifecycleOwner anziché getViewLifecycleOwner(). (aosp/1143821)

Versione 1.2.0-rc01

23 ottobre 2019

androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 e androidx.fragment:fragment-testing:1.2.0-rc01 sono stati rilasciati. La versione 1.2.0-rc01 contiene questi commit.

Nuove funzionalità

  • FragmentContainerView ora supporta l'attributo class oltre a android:name, rispecchiando la funzionalità del tag <fragment>. (b/142722242)
  • È stato aggiunto un nuovo controllo Lint che garantisce l'utilizzo di getViewLifecycleOwner() quando si osserva LiveData da onCreateView(), onViewCreated() o onActivityCreated(). (b/137122478)

Correzioni di bug

  • I callback onDismiss e onCancel su DialogFragment ora garantiscono che DialogInterface passato loro sia diverso da null e che getDialog() restituisca un valore diverso da null quando vengono eseguiti. (b/141974033)
  • FragmentContainerView ora aggiunge il frammento definito da class o android:name come parte dell'espansione, assicurando che findFragmentById() e findFragmentByTag() funzionino immediatamente dopo. (b/142520327)
  • È stato corretto un IllegalStateException in FragmentContainerView a causa del salvataggio dello stato. (b/142580713)
  • È stato corretto un UnsupportedOperationException in FragmentContainerView quando la classe FragmentContainerView è offuscata. (b/142657034)

Problemi noti

  • I fragment a cui viene fatto riferimento solo tramite l'attributo class o android:name in un FragmentContainerView non vengono conservati automaticamente da ProGuard, pertanto devi aggiungere manualmente una regola keep per ogni classe di fragment. Abbiamo disattivato la regola Lint che suggerisce di passare a FragmentContainerView finché il problema non viene risolto tramite aapt2. (b/142601969)

Versione 1.2.0-beta02

11 ottobre 2019

androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 e androidx.fragment:fragment-testing:1.2.0-beta02 sono stati rilasciati. La versione 1.2.0-beta02 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui onInflate() di Fragment non riceveva gli attributi corretti da FragmentContainerView, interrompendo casi come NavHostFragment. (b/142421837)

Versione 1.2.0-beta01

9 ottobre 2019

androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 e androidx.fragment:fragment-testing:1.2.0-beta01 sono stati rilasciati. La versione 1.2.0-beta01 contiene questi commit.

Nuove funzionalità

  • FragmentContainerView aggiunge il supporto per l'aggiunta di un frammento iniziale con il supporto aggiunto per gli attributi XML android:name e android:tag facoltativi. A differenza del tag <fragment>, FragmentContainerView utilizza un normale FragmentTransaction sotto il cofano per aggiungere il frammento iniziale, consentendo ulteriori operazioni FragmentTransaction su FragmentContainerView e l'utilizzo di View Binding per il layout. (b/139830628, b/141177981)
  • I frammenti ora contengono un avviso Lint che offre una correzione rapida per sostituire <fragment> con FragmentContainerView. (b/139830056)

Correzioni di bug

  • È stato corretto un ClassCastException quando si utilizzava androidx.transition. (b/140680619)
  • Quando si utilizza Transition 1.3.0-beta01, i frammenti ora attendono il completamento delle transizioni androidx.transition (oltre alle transizioni e alle animazioni del framework, che sono state corrette rispettivamente in Fragment 1.2.0-alpha03 e Fragment 1.2.0-alpha02) prima di inviare onDestroyView(). (aosp/1119841)
  • Quando si utilizza Transition 1.3.0-beta01, i fragment ora annullano correttamente le transizioni androidx.transition prima di avviare nuove transizioni / animazioni sullo stesso contenitore. (aosp/1119841)
  • È stato risolto un problema relativo all'API 17 e versioni precedenti durante l'utilizzo delle transizioni androidx.transition nella visualizzazione principale del fragment quando si utilizza FragmentContainerView. (b/140361893)
  • L'artefatto fragment-testing ora dipende da AndroidX Test 1.2.0, risolvendo un'incompatibilità con l'ultima versione di Espresso 3.2.0. (b/139100149)
  • È stato rimosso l'utilizzo di Log.w in FragmentManager. (aosp/1126468)

Problemi noti

  • onInflate() del fragment non riceve gli attributi corretti da FragmentContainerView, interrompendo casi come NavHostFragment. (b/142421837)

Versione 1.2.0-alpha04

18 settembre 2019

androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 e androidx.fragment:fragment-testing:1.2.0-alpha04 sono stati rilasciati. La versione 1.2.0-alpha04 contiene questi commit.

Modifiche alle API

  • I metodi getFragmentManager() e requireFragmentManager() su Fragment sono stati ritirati e sostituiti con un singolo metodo getParentFragmentManager(), che restituisce FragmentManager non null a cui viene aggiunto il fragment (puoi utilizzare isAdded() per determinare se è sicuro chiamarlo). (b/140574496)
  • Il metodo statico FragmentManager.enableDebugLogging è stato ritirato. FragmentManager ora rispetta Log.isLoggable() per il tag FragmentManager, consentendoti di attivare la registrazione DEBUG o VERBOSE senza ricompilare l'app. (aosp/1116591)

Correzioni di bug

  • Ora i frammenti vengono eliminati correttamente mentre sono in esecuzione le animazioni di uscita su altri frammenti. (b/140574199)
  • È stato risolto un problema per cui i fragment chiamavano Activity.findViewById(), cosa che non facevano prima. (aosp/1116431)

Versione 1.2.0-alpha03

5 settembre 2019

androidx.fragment:fragment:1.2.0-alpha03, androidx.fragment:fragment-ktx:1.2.0-alpha03 e androidx.fragment:fragment-testing:1.2.0-alpha03 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche alle API

Correzioni di bug

  • FragmentContainerView ora inverte correttamente l'ordine di disegno quando i frammenti vengono estratti dal back stack. (b/139104187)
  • È stato risolto un problema per cui veniva eseguita l'animazione errata quando si estraeva un frammento e si aggiungeva un nuovo frammento contemporaneamente. (b/111659726)
  • Ora i fragment attendono il completamento delle transizioni (oltre alle animazioni, corretto in Fragment 1.2.0-alpha02) prima di inviare onDestroyView(). (b/138741697)

Versione 1.2.0-alpha02

7 agosto 2019

androidx.fragment:fragment:1.2.0-alpha02, androidx.fragment:fragment-ktx:1.2.0-alpha02 e androidx.fragment:fragment-testing:11.2.0-alpha02 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • SavedStateViewModelFactory è ora la factory predefinita utilizzata quando si utilizzano by viewModels(), by activityViewModels(), il costruttore ViewModelProvider o ViewModelProviders.of() con un Fragment. (b/135716331)
  • Le animazioni predefinite quando utilizzi TRANSIT_FRAGMENT_OPEN, TRANSIT_FRAGMENT_CLOSE, TRANSIT_FRAGMENT_FADE con setTransition su un FragmentTransaction sono state aggiornate in modo che corrispondano alle animazioni utilizzate dalle attività sui dispositivi Android 10. (aosp/1012812, aosp/1014730)

Modifiche alle API

  • Introduce FragmentContainerView come contenitore fortemente consigliato per i Fragment aggiunti dinamicamente, sostituendo l'utilizzo di FrameLayout e così via, in quanto risolve i problemi di ordinamento Z delle animazioni e l'invio degli inset della finestra ai Fragment. (b/37036000, aosp/985243, b/136494650)
  • È stato aggiunto un metodo statico FragmentManager.findFragment(View) per recuperare il fragment contenitore da una visualizzazione sottoposta a inflate da un fragment. È disponibile anche un'estensione Kotlin in fragment-ktx. (aosp/1090757)
  • Sono stati aggiunti nuovi overload di add() e replace() su FragmentTransaction che accettano un Class<? extends Fragment> e un Bundle facoltativo di argomenti. Questi metodi utilizzano FragmentFactory per creare un'istanza del fragment da aggiungere. Anche l'estensione Kotlin che utilizza tipi reificati (ad es.fragmentTransaction.replace<YourFragment>(R.id.container)) è stata aggiunta a fragment-ktx. (b/126124987)
  • Sono state aggiunte annotazioni @MainThread ai callback del ciclo di vita Fragment. (b/127272564)
  • Le API correlate al titolo della breadcrumb su FragmentTransaction e FragmentManager.BackStackEntry sono state ritirate. (b/138252944)
  • Il metodo setTransitionStyle su FragmentTransaction è stato ritirato. (aosp/1011537)
  • Molti metodi in FragmentManager non sono più abstract. FragmentManager stesso rimane abstract e non deve essere istanziato o esteso direttamente. Devi continuare a ottenere un'istanza esistente solo da getSupportFragmentManager(), getChildFragmentManager() e così via.

Correzioni di bug

  • Da Fragment 1.1.0-rc04: ora i fragment annullano correttamente le transizioni posticipate quando vengono rimossi. (b/138251858)
  • Da Fragment 1.1.0-rc03: è stato risolto un problema per cui la chiamata di postponeEnterTransition() con un timeout più di una volta non annullava i timeout precedenti. (b/137797118)
  • Da Frammento 1.1.0-rc02: è stato corretto un arresto anomalo in FragmentPagerAdapter e FragmentStatePagerAdapter durante la rimozione dell'elemento corrente. (b/137209870)
  • Ora i fragment attendono il completamento delle animazioni prima di inviare onDestroyView(). (b/136110528)
  • Le animazioni dei frammenti dei frammenti secondari e dei relativi discendenti ora vengono gestite correttamente durante l'animazione del frammento principale. (b/116675313)
  • È stato corretto un NullPointerException quando si utilizzano le transizioni degli elementi condivisi e si combinano un'operazione di visualizzazione e aggiunta. (b/120507394)
  • È stata aggiunta una soluzione alternativa a IllegalStateException quando si utilizzano FragmentPagerAdapter e FragmentStatePagerAdapter nei test Robolectric. (b/137201343)

Versione 1.2.0-alpha01

2 luglio 2019

androidx.fragment:fragment:1.2.0-alpha01, androidx.fragment:fragment-ktx:1.2.0-alpha01 e androidx.fragment:fragment-testing:1.2.0-alpha01 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • FragmentManager ora chiama requestApplyInsets() dopo aver collegato la visualizzazione del fragment e subito prima di chiamare onViewCreated(), assicurandosi che la visualizzazione abbia sempre gli inset corretti. (b/135945162)

Correzioni di bug

  • È stato corretto un NullPointerException quando veniva visualizzato un FragmentTransaction che utilizzava setPrimaryNavigationFragment() prima di replace(). (b/134673465)

Versione 1.1.0

Versione 1.1.0

5 settembre 2019

androidx.fragment:fragment:1.1.0, androidx.fragment:fragment-ktx:1.1.0 e androidx.fragment:fragment-testing:1.1.0 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche importanti dalla versione 1.0.0

  • fragment-testing: l'artefatto fragment-testing fornisce una classe FragmentScenario per testare un fragment in isolamento. Per ulteriori dettagli, consulta la documentazione relativa al test dei fragment della tua app.
  • FragmentFactory: ora puoi impostare un FragmentFactory su un FragmentManager per gestire la creazione di istanze di frammenti, eliminando il requisito rigoroso di avere un costruttore senza argomenti.
  • Delegati di proprietà Kotlin per i ViewModel: l'artefatto fragment-ktx ora contiene due delegati di proprietà Kotlin: by viewModels() per accedere ai ViewModel associati al singolo fragment e by activityViewModels() per accedere ai ViewModel con ambito limitato all'attività.
  • Max Lifecycle: ora puoi impostare uno stato del ciclo di vita massimo per un fragment chiamando setMaxLifecycle() su un FragmentTransaction. Questo sostituisce il campo setUserVisibleHint(), ora obsoleto. FragmentPagerAdapter e FragmentStatePagerAdapter hanno un nuovo costruttore che ti consente di passare al nuovo comportamento.
  • Costruttore FragmentActivity LayoutId: le sottoclassi di FragmentActivity ora possono chiamare facoltativamente un costruttore su FragmentActivity che accetta un ID R.layout, indicando il layout da impostare come visualizzazione dei contenuti in alternativa alla chiamata di setContentView() in onCreate(). Ciò non modifica il requisito che la sottoclasse abbia un costruttore senza argomenti.
  • Costruttore Fragment LayoutId: le sottoclassi di Fragment ora possono facoltativamente chiamare un costruttore su Fragment che accetta un ID R.layout, indicando il layout da utilizzare per questo frammento in alternativa all'override di onCreateView(). Il layout gonfiato può essere configurato in onViewCreated().
  • Posticipa con timeout: è stato aggiunto un nuovo sovraccarico di postponeEnterTransition() che richiede un timeout.

Versione 1.1.0-rc04

7 agosto 2019

androidx.fragment:fragment:1.1.0-rc04, androidx.fragment:fragment-ktx:1.1.0-rc04 e androidx.fragment:fragment-testing:1.1.0-rc04 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • Ora i frammenti annullano correttamente le transizioni posticipate quando vengono rimossi. (b/138251858)

Versione 1.1.0-rc03

19 luglio 2019

androidx.fragment:fragment:1.1.0-rc03, androidx.fragment:fragment-ktx:1.1.0-rc03 e androidx.fragment:fragment-testing:1.1.0-rc03 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • È stato risolto un problema a causa del quale la chiamata di postponeEnterTransition() con un timeout più di una volta non annullava i timeout precedenti. (b/137797118)

Versione 1.1.0-rc02

17 luglio 2019

androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 e androidx.fragment-testing:fragment:1.1.0-rc02 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • È stato risolto un arresto anomalo in FragmentPagerAdapter e FragmentStatePagerAdapter durante la rimozione dell'elemento corrente. (b/137209870)

Versione 1.1.0-rc01

2 luglio 2019

androidx.fragment:fragment:1.1.0-rc01, androidx.fragment:fragment-ktx:1.1.0-rc01 e androidx.fragment:fragment-testing:1.1.0-rc01 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • Ora i frammenti aggiornano correttamente la loro visibilità quando utilizzano le operazioni show() o hide() durante l'esecuzione della transizione. (b/133385058)
  • È stato corretto un NullPointerException quando veniva visualizzato un FragmentTransaction che utilizzava setPrimaryNavigationFragment() prima di replace(). (b/134673465)

Versione 1.1.0-beta01

5 giugno 2019

androidx.fragment:fragment:1.1.0-beta01, androidx.fragment:fragment-ktx:1.1.0-beta01 e androidx.fragment:fragment-testing:1.1.0-beta01 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • I callback androidx.lifecycle.Lifecycle (in particolare quelli relativi a STARTED, RESUMED, PAUSED, STOPPED e DESTROYED) per i frammenti nidificati ora sono nidificati correttamente. (b/133497591)
  • Le OnBackPressedCallback istanze registrate nel onCreate() di un fragment ora hanno la precedenza sul FragmentManager secondario. (b/133175997)
  • I fragment secondari non vengono più animati quando il fragment principale viene sostituito. (b/121017790)
  • Le animazioni e le transizioni dei fragment vengono ora ignorate quando si utilizza animateLayoutChanges="true", risolvendo un problema per cui i fragment non venivano eliminati correttamente. (b/116257087)

Versione 1.1.0-alpha09

16 maggio 2019

androidx.fragment:fragment:1.1.0-alpha09, androidx.fragment:fragment-ktx:1.1.0-alpha09 e androidx.fragment:fragment-testing:1.1.0-alpha09 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche alle API

  • Ora i fragment ricevono un callback a un nuovo metodo onPrimaryNavigationFragmentChanged(boolean) quando cambia il fragment di navigazione principale. aosp/960857

Correzioni di bug

  • Le voci di menu aumentate da un fragment secondario vengono ora rimosse correttamente quando viene rimosso il fragment principale. b/131581013

Versione 1.1.0-alpha08

7 maggio 2019

androidx.fragment:fragment:1.1.0-alpha08, androidx.fragment:fragment-ktx:1.1.0-alpha08 e androidx.fragment:fragment-testing:1.1.0-alpha08 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Questa release non è compatibile con Preferences 1.1.0-alpha01 fino a 1.1.0-alpha04. Esegui l'upgrade a Preferences 1.1.0-alpha05 quando utilizzi questa versione di Fragments.

Nuove funzionalità

  • È stato aggiunto un nuovo overload di postponeEnterTransition() che richiede un timeout, dopodiché il fragment chiamerà automaticamente startPostponedEnterTransition() b/120803208

Modifiche alle API

  • Modifica che causa interruzione: il metodo FragmentFactory instantiate precedentemente deprecato che accettava un Bundle è stato rimosso. aosp/953856
  • Modifica sostanziale: le costanti RESUME_ONLY_CURRENT_FRAGMENT e USE_SET_USER_VISIBLE_HINT in FragmentPagerAdapter e FragmentStatePagerAdapter sono state rinominate rispettivamente in BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT e BEHAVIOR_SET_USER_VISIBLE_HINT. aosp/954782

Correzioni di bug

  • I fragment il cui ciclo di vita è stato limitato tramite setMaxLifecycle() non vengono più ripristinati prima di raggiungere lo stato finale. b/131557151
  • Quando utilizzi setMaxLifecycle(Lifecycle.State.CREATED), la visualizzazione dei frammenti viene eliminata correttamente. aosp/954180

Versione 1.1.0-alpha07

25 aprile 2019

androidx.fragment:fragment:1.1.0-alpha07, androidx.fragment:fragment-ktx:1.1.0-alpha07 e androidx.fragment:fragment-testing:1.1.0-alpha07 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Ora puoi impostare uno stato del ciclo di vita massimo per un fragment chiamando setMaxLifecycle() su un FragmentTransaction. Questo sostituisce il campo setUserVisibleHint(), ora obsoleto. FragmentPagerAdapter e FragmentStatePagerAdapter hanno un nuovo costruttore che ti consente di passare al nuovo comportamento. (b/129780800)

Modifiche alle API

  • moveToState(STARTED) su FragmentScenario ora può essere chiamato solo su dispositivi con API 24 e versioni successive. (b/129880016)

Modifiche al comportamento

  • A seguito di (b/129907905), i fragment nel back stack non riceveranno un callback a onCreateView() quando l'attività di hosting viene ricreata. Ora onCreateView() verrà chiamato solo quando il fragment diventa visibile (ovvero quando viene estratto dal back stack).

Correzioni di bug

  • È stato risolto un problema quando si utilizzava un tag <fragment> in XML e il costruttore contentLayoutId di FragmentActivity o AppCompatActivity. (b/129907905)
  • È stato corretto un problema per cui i fragment nel back stack non venivano spostati almeno a CREATED dopo una modifica alla configurazione, causando lo smaltimento non corretto di ViewModel e fragment secondari mantenuti. (b/129593351)
  • È stato corretto un arresto anomalo in restoreSaveState causato da una desincronizzazione dei frammenti conservati dopo il salvataggio dello stato dell'istanza. (b/130433793) (aosp/947824)
  • Sono stati risolti i problemi per cui un OnBackPressedCallback aggiunto con un ciclo di vita del frammento non veniva chiamato se FragmentManager aveva un back stack. Per maggiori dettagli, vedi androidx.activity 1.0.0-alpha07. (aosp/948209)
  • I fragmenti non applicano più LAYER_TYPE_HARDWARE per le animazioni. Se hai bisogno di un'animazione del livello hardware, impostala come parte dell'animazione. (b/129486478)

Versione 1.1.0-alpha06

3 aprile 2019

androidx.fragment:fragment:1.1.0-alpha06, androidx.fragment:fragment-ktx:1.1.0-alpha06 e androidx.fragment:fragment-testing:1.1.0-alpha06 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Le eccezioni generate da FragmentManager ora includono il nome del fragment nel messaggio. (b/67759402)

Modifiche alle API

  • Fragment e FragmentActivity ora contengono un secondo costruttore che accetta un @LayoutRes int, che sostituisce il comportamento precedente di annotazione della classe con @ContentView. Questo approccio funziona sia nei moduli app che in quelli libreria. (b/128352521)
  • onActivityResult() di FragmentActivity ora è contrassegnato correttamente come @CallSuper. (b/127971684)
  • Il metodo instantiate di FragmentFactory che accetta un argomento Bundle è stato ritirato e le app devono utilizzare il nuovo overload instantiate che non accetta un Bundle. (b/128836103)
  • I metodi FragmentScenario ora sono annotati correttamente con @StyleRes. (aosp/924193)
  • FragmentTabHost è stato ritirato. (b/127971835)
  • getThemedContext() di FragmentActivity è stato rimosso. (aosp/934078)

Correzioni di bug

  • È stato corretto un problema di regressione nella versione 1.1.0-alpha05 che causava il lampeggio del frammento in arrivo sullo schermo. (b/129405432)
  • È stato risolto un problema per cui il frammento di navigazione principale veniva perso dopo una serie di operazioni popBackStack+replace+popBackStack. (b/124332597)
  • È stato risolto un problema durante l'utilizzo dei costruttori @ContentView nell'attività durante il ripristino dello stato del fragment. (b/127313094)
  • È stata corretta la logica di setTargetFragment() quando si sostituisce un Fragment di destinazione esistente con un Fragment non ancora collegato a FragmentManager. (aosp/932156)

Versione 1.1.0-alpha05

13 marzo 2019

androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 e androidx.fragment:fragment-testing:1.1.0-alpha05 sono stati rilasciati. L'elenco completo dei commit inclusi in questa versione è disponibile qui.

Nuove funzionalità

  • Le ricerche di annotazioni @ContentView ora vengono memorizzate nella cache (b/123709449)

Modifiche al comportamento

  • La chiamata di remove(), hide(), show(), detach() e setPrimaryNavigationFragment() con un frammento collegato a un FragmentManager diverso ora genera un IllegalStateException anziché non riuscire in modo silenzioso (aosp/904301)

Correzioni di bug

  • onNewIntent per FragmentActivity ora è contrassegnato correttamente con @CallSuper (b/124120586)
  • È stato risolto un problema a causa del quale onDismiss() di DialogFragment poteva essere chiamato due volte quando si utilizzava getDialog().dismiss() o getDialog().cancel() (b/126563750)

Versione 1.1.0-alpha04

7 febbraio 2019

androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 e androidx.fragment:fragment-testing 1.1.0-alpha04 sono stati rilasciati.

Nuove funzionalità

  • È stato aggiunto il supporto per l'annotazione della classe @ContentView, che consente di indicare quale file XML di layout deve essere espanso in alternativa all'override di onCreateView(). Ti consigliamo di visualizzare i lavori correlati in onViewCreated(). (aosp/837619)
  • fragment-testing ora dipende dalla versione stabile 1.1.0 di androidx.test:core-ktx (b/121209673)
  • Ora puoi utilizzare openActionBarOverflowOrOptionsMenu con FragmentScenario per testare i menu delle opzioni ospitati da Fragment (b/121126668)

Modifiche alle API

  • È stato aggiunto un metodo requireArguments() che restituisce un valore @NonNull Bundle o genera un errore IllegalStateException (b/121196360)
  • È stata aggiunta una nota che indica che getLifecycle(), getViewLifecycleOwner() e getViewLifecycleOwnerLiveData() non devono essere sostituiti e verranno resi definitivi in una release futura. Se attualmente esegui l'override di questo metodo, invia una richiesta di funzionalità. (aosp/880714)
  • È stata aggiunta una nota che indica che getViewModelStore() non deve essere sostituito e verrà reso definitivo in una release futura. Se attualmente esegui l'override di questo metodo, invia una richiesta di funzionalità. (aosp/880713)
  • È stato risolto un problema di compatibilità binaria con le versioni precedenti di Fragments. (aosp/887877) (aosp/889834)

Correzioni di bug

  • I frammenti target vengono cancellati correttamente quando passi null a setTargetFragment(). (aosp/849969)
  • È stato risolto un problema per cui a volte i frammenti target non erano disponibili in o dopo onDestroy(). (b/122312935)
  • Il metodo onDismiss() di DialogFragment viene ora chiamato prima di onDestroy(). (aosp/874133) (aosp/890734)

Versione 1.1.0-alpha03

17 dicembre 2018

Nuove funzionalità

  • Il frammento ora implementa BundleSavedStateRegistryOwner e dipende dalla libreria SavedState appena rilasciata [aosp/824380]
  • È stato aggiunto un delegato della proprietà Kotlin by activityViewModels per recuperare i ViewModel associati all'attività contenitore [b/119050253]
  • Il delegato della proprietà Kotlin by viewModels è stato ampliato per accettare un metodo lambda facoltativo per ottenere ViewModelStoreOwner, consentendoti di passare il Fragment principale o un altro ViewModelStoreOwner personalizzato con codice come val viewModel: MyViewModel by viewModels(::requireParentFragment) [b/119050253]

Modifiche alle API

  • FragmentScenario ora ti consente di specificare un tema come Theme.AppCompat [b/119054431]. Si tratta di una modifica che provoca un errore.
  • È stato aggiunto un metodo requireView() che restituisce un @NonNull View o genera un IllegalStateException [b/120241368]
  • È stato aggiunto un metodo requireParentFragment() che restituisce un @NonNull Fragment o genera un IllegalStateException [b/112103783]

Correzioni di bug

  • È stato corretto IllegalStateException: Failure saving state b/120814739
  • I fragment ripristinati dallo stato dell'istanza salvato ora riceveranno sempre un Bundle non nullo [b/119794496]
  • I frammenti rimossi non riutilizzano più il relativo oggetto Lifecycle se vengono aggiunti di nuovo [b/118880674]

Versione 1.1.0-alpha02

3 dicembre 2018

Nuove funzionalità

  • Le estensioni Kotlin di FragmentScenario ora ti consentono di utilizzare una lambda per la costruzione di Fragment in alternativa al passaggio di un'istanza FragmentFactory. (aosp/812913)

Correzioni di bug

  • È stato corretto un errore IllegalStateException quando si utilizzano Fragment nidificati nel back stack (b/119256498).
  • È stato corretto l'arresto anomalo quando si utilizza FragmentScenario.recreate() con un FragmentFactory (aosp/820540)
  • È stato risolto un problema per cui i frammenti di destinazione non erano accessibili dopo la rimozione del frammento (aosp/807634)

Versione 1.1.0-alpha01

5 novembre 2018

Questa è la prima release dell'artefatto fragment-testing e di FragmentScenario, che si basa sulle API androidx.test:core. Per ulteriori dettagli, consulta la documentazione sui test dei fragment.

Nuove funzionalità

  • Nuova classe FragmentScenario per testare i fragment in modo isolato.
  • Ora puoi impostare un FragmentFactory su qualsiasi FragmentManager per controllare come vengono create le nuove istanze di Fragment.
  • È stato aggiunto un nuovo delegato di proprietà Kotlin by viewModels() per recuperare i ViewModel da un fragmento.
  • Gli eventi di input in attesa (ad esempio i clic) ora vengono annullati nel onStop() di un fragmento.

Modifiche alle API

  • Ha ampliato in modo significativo le annotazioni di nullabilità nell'intera superficie dell'API Fragment.

Correzioni di bug

  • È stato corretto un problema che causava l'esito negativo delle operazioni di frammentazione all'interno di LiveData (b/77944637)

Problemi noti

  • Non è possibile accedere ai frammenti di destinazione dopo che un frammento è stato rimosso da FragmentManager.
  • fragment-testing dipende da androidx.test:core:1.0.0-beta01 anziché dal androidx.test:core:1.0.0 corretto.