Frammento
Segmentare l'app in più schermate indipendenti ospitate all'interno di un'attività.
Ultimo aggiornamento Release stabile Candidato per la release Versione beta Release alpha
30 ottobre 2024 1.8.5 - - -

Dichiarazione delle dipendenze

Per aggiungere una dipendenza da Fragment, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.

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

Alla moda

dependencies {
    def fragment_version = "1.8.3"

    // 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.3"

    // 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 ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, 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.

Creare un nuovo problema

Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.

Versione 1.8

Versione 1.8.5

30 ottobre 2024

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

Correzioni di bug

  • È stato corretto un problema relativo a IllegalStateException attivato da saveBackStack solo dopo l'annullamento o l'interruzione di un gesto Indietro predittivo. (I3387d, b/342419080)

Versione 1.8.4

2 ottobre 2024

androidx.fragment:fragment-*:1.8.4 viene 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 di Fragments quando si utilizzavano le transizioni AndroidX. (Ibc038, b/364804225)
  • È stato risolto un problema nei frammenti per cui l'interruzione di un gesto di ritorno predittivo inviava il gestore dei frammenti a uno stato indefinito e poteva persino mostrare il frammento sbagliato. (If82e2, b/338624457)
  • È stato corretto un problema con UninitializedPropertyAccessException in AndroidFragment quando viene sostituita dinamicamente la classe utilizzata dall'istanza AndroidFragment. (I12dea)

Versione 1.8.3

4 settembre 2024

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

Correzioni di bug

  • Ora FragmentManager prende in considerazione correttamente le operazioni in sospeso quando gestisce il gesto Indietro predittivo. In questo modo, il ripristino del sistema non causerà più un IndexOutOfBoundsException. (I9ba32, b/342316801)
  • AndroidFragment non si arresta più in modo anomalo se viene aggiunto alla composizione mentre lo stato dell'attività/del frammento contenente è già stato salvato. (I985e9, b/356643968)

Versione 1.8.2

24 luglio 2024

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

Correzioni di bug

  • AndroidFragment ora gestisce correttamente i casi in cui il frammento principale viene inserito nello stack posteriore del frammento, evitando i problemi "Nessuna visualizzazione trovata per ID" quando si torna al frammento. (I94608)
  • I frammenti aggiunti tramite il metodo FragmentTransaction.add che richiedono un ViewGroup ora attendono per onContainerAvailable prima di passare a onStart(). Ciò influisce sugli utenti di quell'API, come AndroidFragment, che ora attende che AndroidFragment inserisca nuovamente la composizione prima di spostarla in onStart(). (I94608)

Versione 1.8.1

26 giugno 2024

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

Correzioni di bug

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

Versione 1.8.0

12 giugno 2024

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

Modifiche importanti dalla versione 1.7.0

  • L'elemento fragment-compose ora contiene un elemento 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 Frammento. Questo approccio deve essere utilizzato come sostituto diretto dell'approccio consigliato in precedenza che prevede l'utilizzo di AndroidViewBinding per gonfiare un frammento.
  • Il callback onBackStackChangeCancelled nell'interfaccia OnBackStackChangedListener di FragmentManager viene ora attivato nell'ambito dell'esecuzione delle operazioni in FragmentManager, avvicinandolo alla tempistica del callback onBackStackChangeCommitted.

Versione 1.8.0-rc01

29 maggio 2024

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

Correzioni di bug

  • Il callback onBackStackChangeCancelled nell'interfaccia FragmentManagers OnBackStackChangedListener viene ora attivato nell'ambito dell'esecuzione delle operazioni in FragmentManager, avvicinandolo ai tempi del callback onBackStackChangeCommitted. (I5ebfb, b/332916112)

Versione 1.8.0-beta01

14 maggio 2024

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

Correzioni di bug

  • Da Fragment 1.7.1: il pulsante Indietro predittivo verrà ora eseguito solo per le transazioni in cui tutti i frammenti hanno un animatore o una transizione Androidx cercabile. In questo modo è stato risolto un problema per cui l'annullamento di una transazione parzialmente cercabile causava la visualizzazione dello schermo nero. (I43037, b/339169168)

Versione 1.8.0-alpha02

17 aprile 2024

androidx.fragment:fragment-*:1.8.0-alpha02 viene 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 il motivo per cui l'impostazione di un sharedElement senza altre transizioni non andrà a buon fine. (Iec48e)
  • Dal Fragment 1.7.0-rc02: è stato risolto un bug per cui si verificava un arresto anomalo se a una transazione veniva aggiunto un elemento condiviso non cercabile in cui tutte le altre transizioni erano cercabili. Ora la transazione verrà considerata correttamente non cercabile. (I18ccd)

Versione 1.8.0-alpha01

3 aprile 2024

androidx.fragment:fragment-*:1.8.0-alpha01 viene 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 frammento. Può essere usato in sostituzione diretta di AndroidViewBinding Composable.(b/312895363, Icf841)

Modifiche alla documentazione

  • È stata aggiornata la documentazione relativa alle API di 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 viene rilasciato. La versione 1.7.1 contiene questi commit.

Correzioni di bug

  • Il comando predittivo indietro ora verrà eseguito solo per le transazioni in cui tutti i frammenti hanno un animazione o una transizione Androidx ricercabile. In questo modo è stato risolto un problema per cui l'annullamento di una transazione parzialmente cercabile causava la visualizzazione di una schermata vuota. (I43037, b/339169168)

Versione 1.7.0

1° maggio 2024

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

Supporto predittivo del gesto Indietro

  • I frammenti ora supportano la funzionalità predittiva in-app quando si utilizza Animator o quando si utilizza AndroidX Transizione 1.5.0. In questo modo gli utenti possono utilizzare il gesto Indietro per visualizzare il frammento precedente cercando l'Animator/la transizione prima di decidere se eseguire il commit della transazione completando il gesto o annullando l'operazione.
Sistema di transizione 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 di Indietro predittivo in Fragment dopo aver attivato il gesto Indietro predittivo, segnala un problema relativo a Fragment con un progetto di esempio che riproduca il problema. Puoi disattivare il pulsante Indietro predittivo utilizzando FragmentManager.enabledPredictiveBack(false) nella sezione onCreate() della tua attività.

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

Elemento Artifact Compose del frammento

È stato creato un nuovo elemento fragment-compose che si concentra sul supporto delle app in fase di passaggio da un'architettura basata su Fragment a un'architettura completamente basata su Compose.

La prima funzionalità disponibile in questo nuovo artefatto è un metodo di estensione content su Fragment che cerca di semplificare l'utilizzo di Compose per l'UI di un singolo frammento creando un ComposeView per te 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

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

Correzioni di bug

  • Sono stati aggiunti log per indicare il motivo per cui l'impostazione di un sharedElement senza altre transizioni non andrà a buon fine. (Iec48e)
  • È stato corretto un bug per cui si verificava un arresto anomalo se a una transazione veniva aggiunto un elemento condiviso non avanzabile in cui tutte le altre transizioni erano avanzabili. Ora la transazione verrà considerata correttamente non cercabile. (I18ccd)

Versione 1.7.0-rc01

3 aprile 2024

androidx.fragment:fragment-*:1.7.0-rc01 viene 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 viene rilasciato. La versione 1.7.0-beta01 contiene questi commit.

Modifiche all'API

  • FragmentHostCallback ora è scritto in Kotlin in modo che la nullabilità del tipo generico dell'host corrisponda a quella del tipo di ritorno di onGetHost(). (I40af5)

Correzioni di bug

  • È stato risolto un problema per cui, quando si eseguiva un gesto Indietro predittivo su un frammento non presente in un contenitore, il frammento non veniva mai distrutto. Il frammento verrà ora spostato immediatamente nello stato finale. (Ida0d9)
  • È stato risolto un problema in Frammenti per cui l'interruzione delle transizioni in arrivo con un gesto di ritorno predittivo eliminava 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 viene rilasciato. La versione 1.7.0-alpha10 contiene questi commit.

Correzioni di bug

  • È stato risolto il problema noto nella release precedente di Fragment, in cui l'utilizzo del supporto di Indietro predittivo di Fragment per Animator o AndroidX Transition causava l'emissione di un NullPointerException da handleOnBackProgressed se non è mai stato aggiunto un FragmentManager.OnBackStackChangedListener tramite addOnBackStackChangedListener. (I7c835)

Versione 1.7.0-alpha09

24 gennaio 2024

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

Elemento Artifact Compose del frammento

È stato creato un nuovo elemento fragment-compose che si concentra sul supporto delle app in fase di passaggio da un'architettura basata su Fragment a un'architettura completamente basata su Compose.

La prima funzionalità disponibile in questo nuovo elemento è un metodo di estensione content su Fragment che mira a semplificare l'utilizzo di Compose per l'interfaccia utente di un singolo frammento creando un ComposeView per te 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 di ritorno predittivo e gli eventi annullati. (214b87)

Problema noto

  • Quando utilizzi il supporto di Indietro predittivo di Fragment per Animator o AndroidX Transition, Fragments genera un NullPointerException da handleOnBackProgressed se non è mai stato aggiunto un FragmentManager.OnBackStackChangedListener tramite addOnBackStackChangedListener. L'aggiunta manuale di un ascoltatore 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 viene rilasciato. La versione 1.7.0-alpha08 contiene questi commit.

Pulizia

Versione 1.7.0-alpha07

29 novembre 2023

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

Correzioni di bug

  • È stato corretto un problema di tipo NullPointerException causato dall'impostazione della transizione di un elemento condiviso e dall'impossibilità di impostare anche una transizione entrata/uscita. (I8472b)
  • Dal Frammento 1.6.2: quando il frammento di un FragmentContainerView viene espanso, i relativi stati, come FragmentManager, Host e ID, sono ora accessibili nel callback onInflate. (I1e44c, b/307427423)
  • Da Fragment 1.6.2: quando utilizzi clearBackStack per rimuovere un insieme di frammenti, qualsiasi ViewModel del frammento nidificato verrà ora cancellato quando vengono cancellati i ViewModels del frammento principale. (I6d83c, b/296173018)

Versione 1.7.0-alpha06

4 ottobre 2023

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

Aggiornamento delle dipendenze

  • I frammenti sono stati aggiornati in modo da dipendere dalla nuova API animateToStart aggiunta nella transizione 1.5.0-alpha04.

Versione 1.7.0-alpha05

20 settembre 2023

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

Nuove funzionalità

  • I frammenti ora supportano il pulsante Indietro predittivo quando si utilizzano le transizioni AndroidX. In questo modo puoi utilizzare il gesto Indietro per andare al frammento precedente con la tua transizione Androidx personalizzata prima di decidere se eseguire il commit o l'annullamento della transazione tramite il gesto completato. Per attivare questa funzionalità, devi utilizzare la release Transition 1.5.0-alpha03. (Ib49b4, b/285175724)

Problemi noti

  • Al momento si verifica un problema per cui dopo aver annullato una volta un gesto Indietro con una transizione, la prossima volta che avvii il gesto Indietro non verrà eseguita la transizione, causando una schermata vuota. Il problema potrebbe essere causato da un problema nella raccolta Transizione. (b/300157785). Se riscontri questo problema, registra un problema relativo a Fragment con un progetto di esempio che lo riproduca. Puoi disattivare il pulsante Indietro predittivo utilizzando FragmentManager.enabledPredictiveBack(false) nella sezione onCreate() della tua attività.

Versione 1.7.0-alpha04

6 settembre 2023

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

Correzioni di bug

  • Risolto un problema relativo all'annullamento di un gesto di ritorno predittivo in cui i frammenti non riuscivano a raggiungere lo stato del ciclo di vita corretto. (I7cffe, b/297379023)
  • Sono state corrette delle regressioni per cui le animazioni erano consentite con le transizioni. (I59f36)
  • È stato risolto un problema relativo all'utilizzo di Indietro predittivo con i frammenti: il tentativo di tornare indietro due volte in rapida successione nell'ultimo frammento della pila Indietro causava un arresto anomalo. (Ifa1a4)

Versione 1.7.0-alpha03

23 agosto 2023

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

Correzioni di bug

  • È stato risolto un problema con i frammenti quando si utilizza il pulsante Indietro predittivo che causava il salto del primo frammento nella pila Indietro del gestore dei frammenti e il completamento dell'attività quando si utilizza il pulsante Indietro di 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 viene rilasciato. La versione 1.7.0-alpha02 contiene questi commit.

Correzioni di bug

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

Versione 1.7.0-alpha01

7 giugno 2023

Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha01. Questa versione è sviluppata in un ramo interno.

Nuove funzionalità

  • I frammenti ora forniscono supporto per la funzionalità predittiva in-app quando utilizzi Animator. In questo modo puoi utilizzare il gesto Indietro per vedere il frammento precedente con l'Animatore personalizzato prima di decidere se confermare la transazione tramite il gesto di completamento o annullare. Puoi anche disattivare questo nuovo comportamento utilizzando la funzionalità sperimentale enablePredictiveBack()e passando false.

Versione 1.6

Versione 1.6.2

1° novembre 2023

androidx.fragment:fragment-*:1.6.2 viene 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, gli elementi ViewModel di tutti i frammenti nidificati verranno ora cancellati quando i valori ViewModels del frammento principale verranno cancellati. (I6d83c, b/296173018)

Versione 1.6.1

26 luglio 2023

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

Correzioni di bug

  • Risolto un problema per cui lo stato salvato memorizzato quando l'attività è stata interrotta, ma non distrutta, veniva memorizzato in modo errato nella cache anche dopo che l'istanza del frammento era stata spostata di nuovo nello stato RESUMED. Ciò causerebbe il riutilizzo dello stato memorizzato nella cache se l'istanza del frammento si trovasse nella pila di ritorno quando si utilizza l'API di più pile di ritorno per salvare e ripristinare il frammento. (I71288, b/246289075)

Aggiornamento delle dipendenze

  • Ora il frammento dipende da Activity 1.7.2. Questo è stato risolto un problema per cui gli utenti Kotlin non potevano estendere ComponentDialog senza una dipendenza esplicita dall'Attività. (b/287509323)

Versione 1.6.0

7 giugno 2023

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

Modifiche importanti dalla versione 1.5.0

  • Lo stato salvato di Fragment è stato completamente suddiviso tra lo stato della libreria privata (classi Parcelable personalizzate) e lo stato fornito dallo sviluppatore, che ora è sempre archiviato in un Bundle che consente di determinare esattamente da dove proviene lo stato di un frammento.
  • L'interfaccia FragmentManager.OnBackStackChangedListener è stata ampliata con due callback aggiuntivi di onBackStackChangeStarted e onBackStackChangeCommitted che vengono chiamati con ogni Fragment rispettivamente prima che vengano aggiunti/rimossi dalla pila di ritorno del frammento e subito dopo l'commit della transazione.
  • FragmentStrictMode ha aggiunto un nuovo WrongNestedHierarchyViolation che rileva quando un frammento secondario è nidificato nella gerarchia di visualizzazione del relativo elemento principale, ma non è aggiunto al childFragmentManager dell'elemento principale.
  • Le API Fragment e FragmentManager che utilizzano un valore Intent o IntentSender sono ora correttamente annotate con @NonNull per evitare di passare un valore nullo come valore nullo causerebbe sempre l'arresto anomalo delle rispettive API del framework Android richiamate da questi metodi.
  • DialogFragment ora fornisce l'accesso al ComponentDialog sottostante tramite l'API requireComponentDialog().
  • Il frammento ora dipende dal ciclo di vita 2.6.1.
  • Il frammento ora dipende da SavedState 1.2.1.
  • Ora il frammento dipende da ProfileInstaller 1.3.0.
  • L'artefatto fragment-testing-manifest separa le voci manifest dal resto dei componenti di test dei frammenti. 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 al disallineamento delle versioni tra fragment-testing e androidx.test.

Versione 1.6.0-rc01

10 maggio 2023

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

Correzioni di bug

  • Risolto il problema che causava l'invio di ActivityResult con il codice di richiesta errato quando sono state effettuate più richieste startActivityForResult consecutivamente. (If0b9d, b/249519359)
  • Risolto un problema per cui i callback onBackStackChangeListener venivano inviati per le transazioni che in realtà non hanno modificato lo stack precedente se erano combinati con le transazioni che lo hanno fatto (I0eb5c, b/279306628)

Versione 1.6.0-beta01

19 aprile 2023

androidx.fragment:fragment-*:1.6.0-beta01 viene 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 comportano più la perdita del frammento posticipato. (I2ec7d, b/276375110)
  • I nuovi callback onBackStackChangeStarted e onBackStackChangeCommitted ora inviano 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 viene rilasciato. La versione 1.6.0-alpha09 contiene questi commit.

Modifiche all'API

  • DialogFragment ora fornisce l'accesso a ComponentDialog sottostante tramite l'API requireComponentDialog(). (I022e3, b/234274777)
  • Le API dei frammenti commitNow(), executePendingTransactions() e popBackStackImmediate() sono state annotate con @MainThread, il che significa che ora tutte genereranno errori di compilazione quando non vengono chiamate dal thread principale anziché attendere l'errore in fase di esecuzione. (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 modificata la pila di ritorno FragmentManager. (I66055, b/274788957)

Versione 1.6.0-alpha08

22 marzo 2023

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

Modifica del comportamento

  • La temporizzazione del callback OnBackStackChangedListener.onBackStackChangeCommited è stata modificata in modo da eseguire l'operazione prima dell'esecuzione delle operazioni sui frammenti. In questo modo, al 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 viene rilasciato. La versione 1.6.0-alpha07 contiene questi commit.

Correzioni di bug

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

Versione 1.6.0-alpha06

22 febbraio 2023

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

Modifica del comportamento

  • Il nuovo callback onBackStackChangedStarted in onBackStackChangedListener di FragmentManager verrà ora eseguito prima che i frammenti inizino a spostarsi verso i relativi stati target. (I34726)

Versione 1.6.0-alpha05

8 febbraio 2023

androidx.fragment:fragment-*:1.6.0-alpha05 viene 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 forniscono ulteriori informazioni e controllo quando si verificano modifiche allo stack precedente in FragmentManager. (Ib7ce5, b/238686802)

Modifiche alle API

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

Versione 1.6.0-alpha04

7 dicembre 2022

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

Nuove funzionalità

  • FragmentStrictMode ha aggiunto un nuovo WrongNestedHierarchyViolation che rileva quando un frammento secondario è nidificato nella gerarchia di visualizzazione del relativo elemento principale, ma non è aggiunto al childFragmentManager dell'elemento principale. (I72521, b/249299268)

Cambiamenti del comportamento

  • Ora i frammenti ripristinano il loro stato SavedStateRegistry prima di onAttach(), in modo che sia disponibile da tutti i metodi di ciclo di vita verso l'alto. (I1e2b1)

Modifiche all'API

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

In questo modo si evitano conflitti dovuti allo sfasamento delle versioni tra fragment-testing e androidx.test.(I8e534, b/128612536)

Correzioni di bug

  • Da Frammento 1.5.5: i frammenti non salveranno più erroneamente lo stato ViewModel nell'ambito dello stato salvato del registry della visualizzazione. (I10d2b, b/253546214)

Versione 1.6.0-alpha03

5 ottobre 2022

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.6.0-alpha03, androidx.fragment:fragment-ktx:1.6.0-alpha03 e androidx.fragment:fragment-testing:1.6.0-alpha03. La versione 1.6.0-alpha03 contiene questi commit.

Modifiche all'API

  • Ora le classi che estendono DialogFragment dovranno chiamare la funzionalità Super negli override di 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 frammenti ricevano sempre i callback corretti. (I9b380,I34581, (I8dfe6, b/242570955),If9d6b,Id0096,I690b3,I2cba2)

Versione 1.6.0-alpha02

24 agosto 2022

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.6.0-alpha02, androidx.fragment:fragment-ktx:1.6.0-alpha02 e androidx.fragment:fragment-testing:1.6.0-alpha02. La versione 1.6.0-alpha02 contiene questi commit.

Correzioni di bug

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

Versione 1.6.0-alpha01

27 luglio 2022

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.6.0-alpha01, androidx.fragment:fragment-ktx:1.6.0-alpha01 e androidx.fragment:fragment-testing:1.6.0-alpha01. La versione 1.6.0-alpha01 contiene questi commit.

Modifiche al comportamento

  • Lo stato salvato dei 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 frammento. (b/207158202)

Correzioni di bug

  • Da Frammento 1.5.1: correggi una regressione in DialogFragmentCallbacksDetector per cui l'utilizzo della versione lint in bundle con AGP 7.4 causava l'arresto anomalo del 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 vengono 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 vengono rilasciati. La versione 1.5.6 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui la rimozione di un Frammento, indipendentemente dal fatto che avesse aggiunto voci al menu o meno, rendeva il menu dell'attività non valido. (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 vengono rilasciati. La versione 1.5.5 contiene questi commit.

Correzioni di bug

  • I frammenti non salveranno più erroneamente lo stato ViewModel nell'ambito dello stato salvato del registry della visualizzazione. (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 vengono rilasciati. La versione 1.5.4 contiene questi commit.

Correzioni di bug

  • È stato corretto un errore relativo all'utilizzo di un FragmentController personalizzato con un host che non implementa un'interfaccia di callback del provider (OnConfigurationChangedProvider, OnMultiWindowModeChangedProvider, OnTrimMemoryProvider, OnPictureInPictureModeChangedProvider) e alla chiamata della relativa funzione di invio deprecata che non riusciva a inviare ai frammenti 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 vengono rilasciati. La versione 1.5.3 contiene questi commit.

Correzioni di bug

  • È stato corretto un errore che causava il recupero di callback onMultiWindowModeChanged(), onPictureInPictureModeChanged(), onLowMemory() e onConfigurationChanged() dai frammenti sullo stack posteriore. (I34581, I8dfe6, b/242570955)
  • I frammenti figlio 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 vengono rilasciati. La versione 1.5.2 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui l'esecuzione simultanea di una transazione popBackStack() e una replace() causava l'esecuzione di Animation/Animator da parte dei 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 vengono rilasciati. La versione 1.5.1 contiene questi commit.

Correzioni di bug

  • È stata risolta una regressione in DialogFragmentCallbacksDetector per 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 vengono rilasciati. La versione 1.5.0 contiene questi commit.

Modifiche importanti dalla versione 1.4.0

  • Integrazione CreationExtras: Fragment ora è in grado di fornire un ViewModelProvider.Factory stateless tramite CreationExtras di Lifecycle 2.5.0.
  • Integrazione della finestra di dialogo del componente: ora DialogFragment utilizza ComponentDialog tramite l'attività 1.5.0 come finestra di dialogo predefinita restituita da onCreateDialog().
  • Riorganizzazione dello stato dell'istanza salvato: i frammenti hanno iniziato a cambiare il modo in cui salvano lo stato dell'istanza. Questo è un tentativo 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 del FragmentManager.
    • Lo stato associato a ogni singolo frammento viene ora salvato separatamente dallo stato interno di FragmentManager, consentendo di correlare la quantità di stato salvato associata a un singolo frammento con gli ID univoci presenti nel logging di debug di FragmentManager.Fragment

Altre modifiche

  • FragmentStrictMode ora consente ai frammenti privati di terze parti di bypassare specifiche sanzioni per le violazioni utilizzando allowViolation() con il nome della classe.
  • Le API Fragment per fornire un menu al 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 frammenti 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 vengono 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, in modo da poter 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 vengono rilasciati. La versione 1.5.0-beta01 contiene questi commit.

Modifiche all'API

  • A DialogFragment è stato aggiunto un nuovo metodo dismissNow che utilizza commitNow per parità con la funzione showNow. Tieni presente che in questo modo Dialog non verrà chiuso immediatamente, ma verrà aggiornato in modo sincrono lo stato di FragmentManager. (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. Si tratta del primo passo per garantire una maggiore trasparenza su ciò che viene effettivamente salvato da Fragments. (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. Ciò consentirà maggiore trasparenza sui risultati che vengono salvati nello stato dell'istanza salvata. (I6ea12, b/207158202)

Versione 1.5.0-alpha05

6 aprile 2022

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-alpha05, androidx.fragment:fragment-ktx:1.5.0-alpha05 e androidx.fragment:fragment-testing:1.5.0-alpha05. La versione 1.5.0-alpha05 contiene questi commit.

Modifiche all'API

Versione 1.5.0-alpha04

23 marzo 2022

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-alpha04, androidx.fragment:fragment-ktx:1.5.0-alpha04 e androidx.fragment:fragment-testing:1.5.0-alpha04. La versione 1.5.0-alpha04 contiene questi commit.

Modifiche all'API

  • Le API Fragment per fornire un menu all'elemento ActionBar dell'attività sono state deprecate perché associano strettamente il frammento all'attività e non possono essere testate separatamente. Le API MenuHost e MenuProvider aggiunte in Attività 1.4.0-alpha01 forniscono una superficie API equivalente testabile e consapevole del ciclo di vita che dovrebbe essere utilizzata dai frammenti. (I50a59, I20758)

Correzioni di bug

  • SavedStateViewFactory ora supporta l'utilizzo di CreationExtras anche se è stato inizializzato con 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 vengono rilasciati. La versione 1.5.0-alpha03 contiene questi commit.

Modifiche all'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 vengono rilasciati. La versione 1.5.0-alpha02 contiene questi commit.

Nuove funzionalità

  • FragmentStrictMode ora offre la possibilità ai frammenti di terze parti privati di bypassare sanzioni per violazioni specifiche 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 vengono rilasciati. La versione 1.5.0-alpha01 contiene questi commit.

Nuove funzionalità

Correzioni di bug

  • Dal Frammento 1.4.1: FragmentContainerView non genera più un'eccezione di stato illegale quando gli ID vista generati da XML hanno valori negativi. (Ic185b, b/213086140)
  • Dal componente 1.4.1: quando utilizzi un lambda ownerProducer personalizzato con la funzione lazy by viewModels(), ora verrà utilizzato il defaultViewModelProviderFactory del proprietario se non viene fornito un ownerProducer personalizzato, anziché utilizzare sempre la factory del componente.ViewModelProvider.Factory (I56170, b/214106513)
  • È stato corretto un arresto anomalo durante l'accesso a una 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 vengono rilasciati. La versione 1.4.1 contiene questi commit.

Correzioni di bug

  • FragmentContainerView non genera più un'eccezione di stato illegale quando gli ID vista generati da XML hanno valori negativi. (Ic185b, b/213086140)
  • Quando viene utilizzata una lambda ownerProducer personalizzata con la funzione lazy by viewModels(), ora verrà utilizzato il defaultViewModelProviderFactory del proprietario se non viene fornito un ViewModelProvider.Factory personalizzato, anziché utilizzare sempre la factory del frammento. (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 vengono rilasciati. La versione 1.4.0 contiene questi commit.

Modifiche importanti dalla versione 1.3.0

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

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

  • È stato aggiunto FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} il campo per specificare se attivare l'animazione di transizione Attività standard presa dal tema nella transizione dei frammenti.

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

Più serie di foto simili

FragmentManager gestisce un back stack composto da transazioni di frammenti che utilizzavano addToBackStack(). In questo modo puoi visualizzare queste transazioni e tornare allo stato precedente, utilizzando i meccanismi per il salvataggio dello stato con i frammenti per consentire ai frammenti di ripristinare il loro 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 del FragmentTransaction e lo stato di ogni frammento aggiunto in queste transazioni e ti consentono di ripristinare in un secondo momento le transazioni e i relativi frammenti con lo stato invariato. In questo modo puoi "spostarti" efficacemente tra più serie di schede precedenti salvando la serie corrente e ripristinando una serie salvata.

saveBackStack() funziona in modo simile a popBackStack() in quanto è asincrono e comporta l'annullamento di tutte le transazioni dei frammenti che rimandano a quel nome specifico ("popped") e la distruzione e la rimozione di eventuali frammenti aggiunti, ma differisce in alcuni aspetti importanti:

  • saveBackStack() è sempre incluso.
  • A differenza di popBackStack(), che inserisce tutte le transazioni nello stack posteriore se il nome specificato non è presente nello stack posteriore o se viene fornito un nome nullo, saveBackStack() non fa nulla se non hai precedentemente eseguito il commit di una transazione di frammento utilizzando addToBackStack() con quel nome esatto e diverso da 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, onSaveInstanceState() di ogni frammento viene chiamato e lo stato viene ripristinato e tutte le istanze ViewModel associate a questi frammenti vengono conservate (e onCleared() non viene chiamato su di esse).

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

  • Ogni transazione frammento deve utilizzare setReorderingAllowed(true) per garantire che le transazioni possano essere ripristinate come singola operazione atomica.
  • L'insieme di transazioni salvate deve essere autonomo (ovvero non deve fare riferimento esplicito a frammenti esterni a questo insieme di transazioni) per garantire che possano essere ripristinate in un secondo momento, indipendentemente dalle modifiche apportate allo stack precedente nel frattempo.
  • Nessun frammento salvato può essere un frammento mantenuto o avere un frammento mantenuto nel proprio insieme transitivo di frammenti figlio per garantire che FragmentManager non restituisca riferimenti ai frammenti salvati dopo il salvataggio della pila di ritorno.

Analogamente a saveBackStack(), restoreBackStack() e clearBackStack(), che ripristinano o cancellano rispettivamente una pila di chiamate salvata in precedenza, non fanno nulla se non hai chiamato in precedenza saveBackStack() con lo stesso nome.

Per ulteriori informazioni, consulta Più stack Indietro: un'analisi approfondita.

Versione 1.4.0-rc01

3 novembre 2021

androidx.fragment:fragment:1.4.0-rc01 rilasciato 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 vengono rilasciati. La versione 1.4.0-beta01 contiene questi commit.

Correzioni di bug

  • I frammenti padre ora invieranno onHiddenChanged() nell'intera gerarchia prima di avviare il proprio callback. (Iedc20, b/77504618)
  • Ora la tastiera si chiude automaticamente quando passi da un frammento con una tastiera aperta a un frammento con una vista recycler. (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 vengono rilasciati. La versione 1.4.0-alpha10 contiene questi commit.

Lint

  • È stato aggiunto l'avviso di lint DetachAndAttachFragmentInSameFragmentTransaction per rilevare le chiamate sia a detach() che a attach() nello stesso Fragment nello stesso FragmentTransaction. Poiché queste operazioni complementari si annullano a vicenda quando vengono eseguite nella stessa transazione, devono essere suddivise in transazioni separate per poter effettivamente fare qualcosa. (aosp/1832956, b/200867930)
  • È stato aggiunto l'errore di lint FragmentAddMenuProvider per correggere gli utilizzi del ciclo di vita del frammento nel ciclo di vita della visualizzazione del frammento quando si utilizza l'API addMenuProvider di MenuHost. (aosp/1830457, b/200326272)

Aggiornamenti della documentazione

  • Il messaggio di ritiro per le API ora gestito dalle API Activity Result, ovvero startActivityForResult, startIntentSenderForResult, onActivityResult, requestPermissions e onRequestPermissionsResult, è stato ampliato con ulteriori dettagli. (cce80f)
  • Il messaggio di ritiro di onActivityCreated() sia per Fragment che per DialogFragment è stato espanso con ulteriori 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 vengono 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 all'API

  • La classe FragmentContainerView è stata riscritta in Kotlin per garantire che la funzione getFragment rispetti correttamente i valori nulli. (If694a, b/189629145)
  • FragmentStrictMode è ora scritto in Kotlin (I11767, b/199183506)

Correzioni di bug

  • È stato risolto un problema per cui lo stato di un frammento aggiunto con setReorderingAllowed(true) e poi rimosso immediatamente prima dell'esecuzione delle transazioni in attesa non veniva ripulito 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 vengono rilasciati. La versione 1.4.0-alpha08 contiene questi commit.

Correzioni di bug

  • È stato migliorato il UseRequireInsteadOfGet controllo Lint per gestire meglio le parentesi ridondanti. (I2d865)
  • È stato migliorato il controllo lint di UseGetLayoutInflater per gestire ulteriori casi periferici. (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 vengono rilasciati senza modifiche significative. La versione 1.4.0-alpha07 contiene questi commit.

Versione 1.4.0-alpha06

4 agosto 2021

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha06, androidx.fragment:fragment-ktx:1.4.0-alpha06 e androidx.fragment:fragment-testing:1.4.0-alpha06. La versione 1.4.0-alpha06 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema relativo a più stack posteriori durante lo scambio rapido tra stack posteriori che venivano visualizzati come IllegalStateException durante il ripristino di un FragmentTransaction o come seconda copia di un frammento visualizzato. (I9039f)
  • È stato risolto un problema per cui FragmentManager manteneva una copia dello stato precedentemente salvato tramite saveBackStack() anche dopo il suo recupero. (Ied212)
  • Il metodo dismissAllowingStateLoss() di DialogFragment non si arresta più in modo anomalo quando lo chiami dopo il salvataggio dello stato se aggiungi specificamente 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 vengono rilasciati. La versione 1.4.0-alpha05 contiene questi commit.

Correzioni di bug

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

Aggiornamento delle dipendenze

Versione 1.4.0-alpha04

30 giugno 2021

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha04, androidx.fragment:fragment-ktx:1.4.0-alpha04 e androidx.fragment:fragment-testing:1.4.0-alpha04. La versione 1.4.0-alpha04 contiene questi commit.

Modifiche all'API

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

Correzioni di bug

  • Risolto un problema per cui la chiamata a saveBackStack() nell'ambito del supporto di più backstack non andava a buon fine se eseguita contemporaneamente all'esecuzione di un FragmentTransaction che utilizzava replace(). (I73137)
  • È stato corretto un NullPointerException che si verificava dopo il ripristino manuale di un back stack salvato contenente più transazioni quando si utilizzava l'API restoreBackStack() per il supporto di più back stack. Inoltre, è stato risolto 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 precedentemente salvato dei frammenti anche dopo la rimozione di questi frammenti 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 vengono 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 contiene 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 includono messaggi di errore più dettagliati per includere il frammento che causa la violazione e qualsiasi altra informazione in esso 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 include 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 il valore impostato per il suggerimento visibile all'utente. (Ib2d5f)

Cambiamenti del comportamento

  • È stata ripristinata la limitazione relativa alla chiamata di fitsSystemWindows su un FragmentContainerView. Questa operazione non causa più l'arresto anomalo dell'app. (6b8ddd, b/190622202)

Correzioni di bug

  • Da Frammento 1.3.5: è stata corretta una regressione nelle transizioni di elementi condivisi introdotta in Frammento 1.3.4 da aosp/1679887. I frammenti 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ù errori IndexOutOfBoundsException. (I16484, b/188679569, b/188969304)
  • FragmentManager non si arresterà più in modo anomalo quando provi a nascondere un frammento in fase di rimozione. (I573dd, b/183634730)
  • Il controllo lint di OnCreateDialogIncorrectCallback non causerà più un arresto anomalo 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 vengono rilasciati. La versione 1.4.0-alpha02 contiene questi commit.

Nuove funzionalità

  • Ora FragmentStrictMode registrerà sempre le violazioni quando la registrazione è attivata tramite FragmentManager, indipendentemente dal criterio di modalità con restrizioni attualmente in uso. (I02df6, b/187872638)
  • FragmentStrictMode ora supporta l'esenzione di determinate classi Fragment dalla modalità con restrizioni Violation, che consentono a quella classe di aggirare eventuali penali. (Ib4e5d, b/184786736)

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

    • WrongFragmentContainerViolation ora contiene il ViewGroup a cui stava tentando di aggiungere Fragment. (I83c75, b/187871150)
    • TargetFragmentUsageViolationè stato espanso in SetTargetFragmentUsageViolation, GetTargetFragmentUsageViolation e GetTargetFragmentRequestCodeUsageViolation, con SetTargetFragmentUsageViolation contenente il frammento target 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> stava tentando di gonfiare un frammento.(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 tenta di modificare l'attributo fitsSystemWindow in modo programmatico o tramite XML. Le rientranze devono essere gestite 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 vengono 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 collegare la chiamata. (Ife17a, b/162527857)

    val navController = binding.container.getFragment<NavHostFragment>().navController
    
  • È stato aggiunto FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE} il campo per specificare se attivare l'animazione di transizione Attività standard presa dal tema nella transizione dei frammenti. (I46652)

Più serie di foto simili

FragmentManager gestisce un back stack composto da transazioni di frammenti che utilizzavano addToBackStack(). In questo modo puoi visualizzare queste transazioni e tornare allo stato precedente, utilizzando i meccanismi per il salvataggio dello stato con i frammenti per consentire ai frammenti di ripristinare il loro 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 del FragmentTransaction e lo stato di ogni frammento aggiunto in queste transazioni e ti consentono di ripristinare in un secondo momento le transazioni e i relativi frammenti con lo stato invariato. Questo ti permette di "scambiare" efficacemente tra più back stack salvando l'attuale stack dorso e ripristinando uno esistente salvato.

saveBackStack() funziona in modo simile a popBackStack() in quanto è asincrono e comporta l'annullamento di tutte le transazioni dei frammenti che rimandano a quel nome specifico ("popped") e la distruzione e la rimozione di eventuali frammenti aggiunti, ma differisce in alcuni aspetti importanti:

  • saveBackStack() è sempre incluso.
  • A differenza di popBackStack(), che inserisce tutte le transazioni nello stack posteriore se il nome specificato non è presente nello stack posteriore o se viene fornito un nome nullo, saveBackStack() non fa nulla se non hai precedentemente eseguito il commit di una transazione di frammento utilizzando addToBackStack() con quel nome esatto e diverso da 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, onSaveInstanceState() di ogni frammento viene chiamato e lo stato viene ripristinato e tutte le istanze ViewModel associate a questi frammenti vengono conservate (e onCleared() non viene chiamato su di esse).

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

  • Ogni transazione frammento deve utilizzare setReorderingAllowed(true) per garantire che le transazioni possano essere ripristinate come singola operazione atomica.
  • L'insieme di transazioni salvate deve essere autonomo (ovvero non deve fare riferimento esplicito a frammenti esterni a questo insieme di transazioni) per garantire che possano essere ripristinate in un secondo momento, indipendentemente dalle modifiche apportate allo stack precedente nel frattempo.
  • Nessun frammento salvato può essere un frammento mantenuto o avere un frammento mantenuto nel proprio insieme transitivo di frammenti figlio per garantire che FragmentManager non restituisca riferimenti ai frammenti salvati dopo il salvataggio della pila di ritorno.

Come saveBackStack(), restoreBackStack() non fa nulla se non hai già chiamato saveBackStack() con lo stesso nome. (b/80029773)

Fragment StrictMode

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

  • detectFragmentReuse() rileva se un'istanza Fragment rimossa in precedenza viene aggiunta di nuovo a un FragmentManager. Non devi mai interagire o mantenere un riferimento a un'istanza Fragment dopo che è stata eliminata e rimossa da un FragmentManager. (#142, b/153738653)
  • detectFragmentTagUsage() rileva quando utilizzi il tag <fragment> nel layout XML. Devi sempre utilizzare FragmentContainerView quando gonfia i frammenti all'interno del layout. (#141, b/153738235)
  • detectWrongFragmentContainer() rileva quando aggiungi un frammento a un container che non è di tipo FragmentContainerView. Devi sempre utilizzare FragmentContainerView come contenitore per i frammenti 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. (N. 139, b/153737745)

Modifiche alle API

Nuovi controlli Lint

  • Il controllo lint UseGetLayoutInflater ora avvisa quando utilizzi LayoutInflater.from(Context) all'interno di un elemento DialogFragment. Devi sempre utilizzare il metodo getLayoutInflater() del frammento di dialogo per ottenere il metodo appropriato per LayoutInflater. (#156, b/170781346)
  • Il controllo Lint di DialogFragmentCallbacksDetector ora avvisa quando viene chiamato setOnCancelListener o setOnDismissListener nel metodo onCreateDialog() di un DialogFragment. Questi ascoltatori sono di proprietà del DialogFragment stesso e devi sostituire onCancel() e onDismiss() per ricevere questi callback. (#171, b/181780047, b/187524311)

Correzioni di bug

  • Da Fragment 1.3.4: è stata corretta una regressione introdotta 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 frammento. Questi casi d'uso ora utilizzano correttamente ViewModelProvider.Factory fornito dal tuo frammento se sostituisce getDefaultViewModelProviderFactory() (come fanno i frammenti annotati @AndroidEntryPoint quando si utilizza Hilt). Se non sostituisci questo metodo, viene creato un SavedStateViewModelFactory che salva e ripristina il proprio stato insieme alla visualizzazione del frammento come valore predefinito. (I5cbfa, b/186097368)
  • Da Frammento 1.3.4: quando utilizzi FragmentContainerView sull'API 29, i riquadri non verranno più inviati a tempo indeterminato, risolvendo i problemi relativi alle istanze BottomNavigationBar e FloatingActionButton. (I1bb78, b/186012452)
  • Da Fragment 1.3.4: ora puoi recuperare il tuo Parcelable dal bundle del risultato del frammento dopo l'interruzione del processo. (I65932, b/187443158)
  • Dal Fragment 1.3.4: quando esegui una transizione di elementi condivisi su un ViewGroup, se transitionGroup è impostato su false, ora la transizione verrà eseguita 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 vengono rilasciati. La versione 1.3.6 contiene questi commit.

Correzioni di bug

  • Da Frammento 1.4.0-alpha03: FragmentManager non si arresta più in modo anomalo quando tenti di nascondere un frammento rimosso. (I573dd, b/183634730)
  • La visualizzazione del frammento è ora impostata correttamente su GONE quando si utilizza hide() se nella visualizzazione principale è impostato transitionGroup=”true”. (aosp/1766655, b/193603427)
  • Ora FragmentActivity sblocca sempre lo stato salvato come prima operazione nei callback del ciclo di vita che sostituisce. (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 vengono rilasciati. La versione 1.3.5 contiene questi commit.

Correzioni di bug

  • È stata corretta una regressione nelle transizioni degli elementi condivisi introdotta nel Frammento 1.3.4 da aosp/1679887. I frammenti 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ù errori 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 vengono rilasciati. La versione 1.3.4 contiene questi commit.

Correzioni di bug

  • È stata corretta una regressione introdotta 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 frammento quando si utilizza Hilt. Questi casi d'uso ora utilizzano correttamente il valore ViewModelProvider.Factory fornito dal frammento se sostituisce getDefaultViewModelProviderFactory() (come fanno i frammenti annotati @AndroidEntryPoint). Se non sostituisci questo metodo, viene creato un SavedStateViewModelFactory che salva e ripristina il proprio stato insieme alla visualizzazione del frammento come valore predefinito. (I5cbfa, b/186097368)
  • Quando utilizzi FragmentContainerView sull'API 29, gli inset non verranno più inviati indefinitamente, risolvendo i problemi relativi alle istanze BottomNavigationBar e FloatingActionButton. (I1bb78, b/186012452)
  • Ora puoi recuperare il tuo Parcelable dal bundle del risultato del frammento dopo l'interruzione del processo. (I65932, b/187443158)
  • Quando esegui la transizione di un elemento condiviso su un ViewGroup, se il valore transitionGroup è impostato su false per il ViewGroup, ora verrà eseguita correttamente la transizione. (I99675)

Versione 1.3.3

21 aprile 2021

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.3, androidx.fragment:fragment-ktx:1.3.3 e androidx.fragment:fragment-testing:1.3.3. La versione 1.3.3 contiene questi commit.

Nuove funzionalità

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

Correzioni di bug

  • È stata corretta una regressione introdotta in Frammento 1.3.2 che impediva l'esecuzione di animazioni popEnter quando veniva aperta una FragmentTransaction che includeva un'operazione setPrimaryNavFragment, come quelle utilizzate da NavHostFragment. (I38c87, b/183877426)
  • FragmentContainerView ora assicura che a ogni Fragment venga inviato un nuovo set di WindowInsets, garantendo che ogni frammento possa ora consumare i riquadri in modo indipendente. (I63f68, b/172153900)
  • DialogFragment ora gestisce correttamente i casi in cui un frammento secondario viene aggiunto a un contenitore che ha lo stesso ID di un container nella tua classe Dialog personalizzata, risolvendo i problemi relativi alla gerarchia delle visualizzazioni quando riutilizzi ID utilizzati internamente da finestre di dialogo come BottomSheetDialog. (Ie6279, b/180021387)
  • Ora FragmentManager.dump() applica correttamente il rientro al primo frammento dell'elenco dei frammenti attivi. (If5c33, b/183705451)

Correzioni di bug del nuovo State Manager

  • Il nuovo gestore dello stato del frammento ora gestisce correttamente le transizioni di uscita con operazioni di occultamento. (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 vengono rilasciati. La versione 1.3.2 contiene questi commit.

Correzioni di bug del nuovo State Manager

  • Quando esegui contemporaneamente le operazioni popBackStack() e commit(), ora l'ultima operazione imposterà la direzione per tutte le animazioni anziché eseguire alcune animazioni popup e alcune animazioni di entrata. (I7072e, b/181142246)
  • Il nome della transizione per le viste all'interno di una gerarchia di elementi condivisi non verrà più cancellato durante l'esecuzione della transizione di un elemento condiviso. (I4d4a6, b/179934757)

Aggiornamenti delle dipendenze

  • Il frammento ora dipende dall'Attività 1.2.2, risolvendo un problema con il controllo del lint InvalidFragmentVersionForActivityResult dell'attività quando si utilizza il frammento 1.3.1 o versioni successive.
  • Il frammento ora dipende dal ciclo di vita 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 vengono 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 frammenti gonfiati in un'attività RESUMED esistente utilizzando FragmentContainerView ora vengono 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 sostituiti in FragmentActivity ora ereditano correttamente il metodo base javaDoc (I736ce, b/139548782)
  • La documentazione di setFragmentResult e setFragmentResultListener è stata aggiornata per indicare che non accettano più valori null (I990ba, b/178348386)

Correzioni di bug del nuovo State Manager

  • È stata risolta una perdita di memoria nei frammenti causata da mFocusedView (Ib4e9e, b/179925887)
  • I frammenti ora chiamano correttamente onCreateOptionsMenu quando si utilizzano le transazioni di visualizzazione/nascondimento (I8bce8, b/180255554)
  • I frammenti secondari con transizioni che iniziano prima della disposizione del frammento ora raggiungeranno correttamenteRESUMED (Ic11e6, b/180825150)
  • I frammenti gonfiati 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 vengono rilasciati. La versione 1.3.0 contiene questi commit.

Modifiche principali dalla versione 1.2.0

  • Nuovo gestore degli stati: una significativa riscrittura degli elementi interni di FragmentManager ha risolto numerosi problemi relativi all'invio di eventi di ciclo di vita, animazioni e transizioni e alla gestione dei frammenti posticipati.
  • Integrazione dell'API Activity Result: è stato aggiunto il supporto per l'API ActivityResultRegistry introdotta nell'Attività 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 l'articolo aggiornato Ottenere un risultato da un'attività.

    • In questa release sono stati corretti diversi problemi relativi ai codici di richiesta non validi e all'invio di richieste di autorizzazione che impediscono all'API Activity Result di funzionare sulle versioni precedenti di FragmentActivity. Per utilizzare le API Activity Result in un FragmentActivity o un AppCompatActivity, devi eseguire l'upgrade a Fragment 1.3.0.
  • API Fragment Result: è stato aggiunto il supporto per il passaggio dei risultati tra due frammenti tramite nuove API il giorno FragmentManager. Questo funziona per i frammenti di gerarchia (principale/secondario), i DialogFragment e i frammenti in Navigation e garantisce che i risultati vengano inviati al tuo frammento solo se è almeno STARTED. Le API dei frammenti target 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 deprecato. È stato aggiunto un nuovo FragmentOnAttachListener per fornire un'alternativa più flessibile, che consente la delega di onAttachFragment() a listener separati e verificabili e il supporto per l'aggiunta di un listener a FragmentManager diversi dal FragmentManager diretto secondario.

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

    • FragmentScenario ora utilizza setMaxLifecycle() per implementare moveToState(), garantendo un comportamento coerente a tutti i livelli API e disaccoppiando lo stato del frammento dall'attività sottostante.
    • FragmentScenario ora supporta l'impostazione di un Lifecycle.State iniziale per supportare l'affermazione dello stato del frammento 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 di Kotlin withFragment che consente di restituire un valore. In particolare, riavvia le eccezioni sollevate nel blocco specificato.
  • Supporto di ViewTree: 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 da restituire il frammento come ViewModelStoreOwner e un SavedStateRegistryOwner e un LifecycleOwner legati al ciclo di vita della vista del frammento 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() in Fragments è stato ritirato. Con l'introduzione dei ViewModel, gli sviluppatori hanno a disposizione un'API specifica per mantenere lo stato che può essere associata ad attività, frammenti e grafici di navigazione. In questo modo, gli sviluppatori possono utilizzare un normale frammento 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).

  • Ritiro 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 vengono rilasciati. La versione 1.3.0-rc02 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema per cui un DialogFragment principale veniva visualizzato sopra un DialogFragment secondario dopo una modifica alla configurazione; ora i frammenti di finestra di dialogo secondaria vengono visualizzati sempre sopra il frammento di una finestra di dialogo principale. (I30806, b/177439520)
  • È stato risolto il problema per cui l'esecuzione di un'operazione hide con un Animation faceva lampeggiare il frammento nascosto alla fine dell'animazione. (I57e22, b/175417675)
  • I frammenti con le transizioni aggiunte prima dell'aggancio della gerarchia delle visualizzazioni ora raggiungono correttamente RESUMED. (I1fc1d, b/177154873)

Correzioni di bug del nuovo State Manager

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

Versione 1.3.0-rc01

16 dicembre 2020

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-rc01, androidx.fragment:fragment-ktx:1.3.0-rc01 e androidx.fragment:fragment-testing:1.3.0-rc01. 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)

Correzioni di bug del nuovo State Manager

  • È stato corretto un problema di perdita e di artefatto visivo quando si aggiunge un frammento con un Animation a un FragmentContainerView e poi si interrompe l'aggiunta con un'operazione pop. (I952d8)
  • È stato risolto un problema per cui la visualizzazione del frammento rimaneva nella gerarchia delle visualizzazioni se veniva sostituita durante i metodi onCreate() o onViewCreated(). (I8a7d5)
  • Ora lo stato attivo viene ripristinato correttamente nelle visualizzazioni principali del frammento quando vengono riprese. (Ifc84b)
  • La combinazione di operazioni di pop e sostituzione nella stessa transazione del frammento ora mostrerà le animazioni appropriate (Ifd4e4, b/170328691)

Versione 1.3.0-beta02

2 dicembre 2020

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-beta02, androidx.fragment:fragment-ktx:1.3.0-beta02 e androidx.fragment:fragment-testing:1.3.0-beta02. La versione 1.3.0-beta02 contiene questi commit.

Nuove funzionalità

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

Modifiche al comportamento

  • Le viste FragmentContainer che non gonfiano un frammento utilizzando l'attributo class o android:name ora possono essere utilizzate all'esterno di un FragmentActivity. (Id4397, b/172266337)
  • Il tentativo di impostare il ciclo di vita massimo di un frammento su DESTROYED ora genera un errore IllegalArgumentException (Ie7651, b/170765622)
  • L'inizializzazione di un FragmentScenario con uno stato DESTROYED ora genera un IllegalArgumentException (I73590, b/170765622)

Correzioni di bug del nuovo State Manager

  • È stato risolto un problema per cui la visualizzazione non raggiungeva lo stato finale se interrompi una transizione di frammento che utilizzava un Animator o una delle opzioni TRANSIT_FRAGMENT_. (I92426, b/169874632)
  • È stato risolto un problema che impediva l'eliminazione corretta dei frammenti con un elemento Animation in uscita. (I83d65)
  • I frammenti di uscita con effetti invertiti ora vengono annullati e riavviati correttamente con l'effetto di entrata corretto. (I62226, b/167092035)
  • È stato risolto un problema per cui l'istruzione di uscita Animator di un hide() non veniva eseguita. (Id7ffe)
  • I frammenti ora vengono visualizzati correttamente quando vengono posticipati e poi avviati immediatamente. (Ie713b, b/170022857)
  • I frammenti che rimuovono lo stato attivo durante un'animazione non tenteranno più di ripristinare lo stato attivo sulla vista scollegata una volta raggiunta la metrica RESUMED (I38c65, b/172925703)

Contributo esterno

  • Ora FragmentFactory memorizza nella cache le classi dei frammenti separatamente per istanze ClassLoader diverse. 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 vengono 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 in CREATED. (b/159662173)

Modifiche all'API

Cambiamenti del comportamento

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

Correzioni di bug

  • I frammenti gonfiati utilizzando il tag <fragment> ora aspettano correttamente che le relative visualizzazioni vengano aggiunte a un contenitore prima di passare a STARTED (I02f4c)
  • I frammenti visibili e da setMaxLifecycle() a CREATED ora eseguono correttamente i relativi effetti di uscita. (b/165822335)
  • La rimozione di un frammento scollegato che non viene aggiunto alla pila di ritorno non causa più una perdita di memoria. Per gentile concessione di Nicklas Ansman Giertz. (b/166489383)
  • Ora i frammenti attivi avranno sempre un valore FragmentManager non nullo, mentre i frammenti con un valore FragmentManager non nullo saranno 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)

Correzioni di bug del nuovo State Manager

  • Ora i frammenti ripristinano correttamente lo stato di messa a fuoco della visualizzazione appena prima di iniziare l'animazione. (Icc256)
  • I frammenti che hanno solo una transizione di elementi condivisi ora completano correttamente i propri effetti speciali, il che significa che passano effettivamente al loro stato finale (Iaebc7, b/166658128)
  • Le viste a frammento ora vengono sempre rimosse dal container prima di essere eliminate. (Id5876)
  • Il nuovo gestore degli stati 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 vista del frammento ora vengono rispettate dal nuovo gestore dello stato. Ciò significa che se imposti la visualizzazione di un frammento inserito su INVISIBLE prima dell'inizio dell'animazione, quest'ultimo rimarrà effettivamente invisibile. (b/164481490)
  • Ora i frammenti danno la priorità a Animators rispetto a Animations, il che significa che un frammento con entrambi eseguirà soltanto Animator e ignorerà Animation. (b/167579557)
  • Il nuovo gestore di stato non fa più lampeggiare i frammenti durante l'inserimento delle animazioni. (b/163084315)

Problema noto

Quando utilizzi il nuovo gestore degli stati, se premi Indietro durante l'inserimento di un effetto speciale anziché tornare al frammento precedente, il vecchio frammento non viene mai aggiunto di nuovo, il che comporta la 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 vengono rilasciati. La versione 1.3.0-alpha08 contiene questi commit.

Nuovo gestore degli stati

Questa release include un importante refactoring della gestione interna dello stato di FragmentManager, che influisce sull'invio dei metodi del ciclo di vita, sulle animazioni e sulle transizioni, nonché sulla gestione delle transazioni posticipate. Questa opzione è attiva per impostazione predefinita. Per ulteriori dettagli, consulta il post del blog Fragments: Rebuilding the Internals. (b/139536619, b/147749580)

  • In FragmentManager.enableNewStateManager(boolean) è possibile utilizzare un'API sperimentale per controllare se FragmentManager utilizza il nuovo gestore dello stato. (I7b6ee)

I seguenti problemi vengono risolti solo quando si utilizza il nuovo gestore degli stati:

  • Il frammento precedente di un'operazione replace ora viene arrestato correttamente prima dell'avvio del nuovo frammento. (b/161654580)
  • Ora i frammenti impediscono la presenza di più animazioni concorrenti negli stessi frammenti, evitando i casi in cui un Animation sostituisca tutti gli effetti Transition o in cui vengano eseguiti sia un Animator sia un Transition in 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 in uscita. (b/149344150)
  • I frammenti posticipati non rimangono più bloccati nello stato CREATED, ma passano allo stato STARTED insieme ad altri frammenti. (b/129035555)
  • Risolto un problema per cui FragmentManager eseguiva operazioni fuori sequenza quando mescolava una transazione riordinata posticipata e una transazione non riordinata. (b/147297731)
  • L'apertura di più frammenti contemporaneamente non comporterà più la visibilità temporanea dei frammenti intermedi quando si rimandano i frammenti. (b/37140383)
  • FragmentManager ora restituisce i frammenti corretti quando chiami findFragmentById() o findFragmentByTag() dal callback onAttachFragment(). (b/153082833)
  • I frammenti non chiamano più onCreateView() sui frammenti che vengono distrutti quando il frammento 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 frammento 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 frammento. (b/161464278)
  • Ora, se chiami registerForActivityResult() dopo onCreate(), viene generata un'eccezione che indica che questa operazione non è consentita, anziché non generare risultati dopo una modifica della configurazione. (b/162255449)
  • FragmentActivity ora utilizza l'API OnContextAvailableListener introdotta in Attività 1.2.0-alpha08 per ripristinare lo stato di FragmentManager. Eventuali listener aggiunti alle sottoclassi di FragmentActivity verranno eseguiti dopo questo listener. (I513da)

Correzioni di bug

  • ActivityOptions trasmesso quando si utilizza startIntentSenderForResult() sono ora rispettati. (b/162247961)

Problema noto

  • Quando utilizzi il nuovo gestore dello stato, se imposti direttamente la visibilità della vista principale del frammento dopo onViewCreated() e prima di onResume(), la visibilità impostata viene sostituita da FragmentManager, che controlla la visibilità della vista 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 vengono 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 frammento nello stato RESUMED. (b/159662750)
  • È stata aggiunta un'alternativa all'API FragmentScenario di onFragment sotto forma del metodo di estensione reified di Kotlin withFragment che consente di restituire un valore. In particolare, riavvia le eccezioni sollevate nel blocco specificato. (b/158697631)

Modifiche al comportamento

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

Correzioni di bug

  • Ora i frammenti aspettano che la visualizzazione del frammento venga collegata prima di chiamare ViewCompat.requestApplyInsets(), evitando i casi in cui la richiesta di insenatura veniva ignorata. (b/158095749)
  • La chiamata di clearFragmentResultListener ora cancella correttamente l'osservatore 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 vengono rilasciati. La versione 1.3.0-alpha06 contiene questi commit.

Nuove funzionalità

  • Il callback onAttachFragment() su FragmentActivity e Fragment è stato ritirato. È stato aggiunto un nuovo FragmentOnAttachListener per fornire un'alternativa più flessibile, che consente la delega di onAttachFragment() a listener separati e verificabili e il supporto per l'aggiunta di un listener ai gestori dei frammenti diversi dal gestore dei frammenti diretto. (I06d3d)

Correzioni di bug

  • Ora lo stato di visualizzazione dei frammenti principali viene ripristinato prima dei frammenti figlio, per risolvere un problema di ordinamento visivo dopo una modifica alla configurazione quando un DialogFragment mostrava un altro DialogFragment come frammento figlio. (b/157195715)
  • Risolto un problema per cui il controllo Lint di UseRequireInsteadOfGet non gestiva correttamente gli utilizzi in catena 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 vengono 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 esplicitamente un risultato o un ascoltatore impostato in precedenza, utilizza i nuovi metodi clearFragmentResult() e clearFragmentResultListener(). (b/155416778)
  • Le estensioni Kotlin setFragmentResultListener() che accettano un lambda ora sono contrassegnate come inline. (b/155323404)

Modifiche al comportamento

  • startActivityForResult(), startIntentSenderForResult() e requestPermissions in Fragment, precedentemente deprecati, ora utilizzano internamente ActivityResultRegistry, rimuovendo così la limitazione all'utilizzo solo dei bit più bassi (inferiori a 0xFFFF) per i codici di richiesta quando si utilizzano 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 dei sottoclassi quando si utilizza FragmentFactory predefinito. (b/153042497)

Versione 1.3.0-alpha04

29 aprile 2020

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha04, androidx.fragment:fragment-ktx:1.3.0-alpha04 e androidx.fragment:fragment-testing:1.3.0-alpha04. La versione 1.3.0-alpha04 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto il supporto per il passaggio dei risultati tra due frammenti tramite nuove API su FragmentManager. Questo funziona per i frammenti di gerarchia (principale/secondario), i DialogFragment e i frammenti in Navigation e garantisce che i risultati vengano inviati al tuo frammento solo se è almeno STARTED. (b/149787344)

Modifiche alle API

  • Le API dei frammenti target sono state ritirate. Per passare dati tra i frammenti, è invece consigliabile utilizzare le nuove API FragmentResult. (b/149787344)
  • Le API startActivityForResult()/onActivityResult() e requestPermissions()/onRequestPermissionsResult() in Fragment sono state ritirate. Usa le API Activity Result. (aosp/1290887)
  • Modifica in violazione dell'attività 1.2.0-alpha04: il metodo prepareCall() è stato rinominato in registerForActivityResult(). (aosp/1278717)

Correzioni di bug

  • Il valore getViewLifecycleOwner() del frammento viene ora arrestato prima della chiamata di onSaveInstanceState(), rispecchiando il comportamento del ciclo di vita del frammento. (b/154645875)
  • Ora l'istruzione setMenuVisibility(false) in un frammento modifica correttamente la visibilità dei menu forniti dai relativi frammenti secondari. (b/153593580)
  • È stato corretto un problema illegalStateException relativo all'aggiunta di un frammento alla gerarchia delle visualizzazioni di un DialogFragment con FragmentContainerView. (b/154366601)
  • Il metodo getDefaultViewModelProviderFactory() sui frammenti non si arresta più in modo 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 vengono 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 Frammento 1.3.0-alpha02 quando si utilizzava BottomSheetDialogFragment. (b/151652127, aosp/1263328, aosp/1265163)
  • È stato corretto un arresto anomalo durante l'utilizzo di prepareCall da un frammento dopo una modifica della configurazione. (b/152137004)
  • Risolto un problema per cui le transizioni di elementi e uscita condivisi vengono ignorate quando si utilizza setTargetFragment(). (b/152023196)
  • Da Fragment 1.2.4: sono state aggiornate le regole di ProGuard per i frammenti per consentire l'oscuramento dei frammenti conservati. (b/151605338)
  • Da Fragment 1.2.4: è stata disattivata la regola di lint FragmentLiveDataObserve per le classi DialogFragment 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. (b/151765086)

Modifiche alle dipendenze

  • I frammenti dipendono dall'attività 1.2.0-alpha03, che ha apportato miglioramenti significativi all'API Activity Result introdotta nell'attività 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 vengono rilasciati. La versione 1.3.0-alpha02 contiene questi commit.

Nuove funzionalità

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

Modifiche all'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() è stato deprecato. Il codice che tocca la visualizzazione del frammento deve essere inserito in onViewCreated() (che viene chiamato immediatamente prima di onActivityCreated()) e l'altro codice di inizializzazione deve essere inserito in onCreate(). Per ricevere un callback specificamente quando il onCreate() dell'attività è completato, un LifeCycleObserver deve essere registrato nel Lifecycle dell'attività in onAttach() e rimosso una volta ricevuto il callback onCreate(). (b/144309266)

Correzioni di bug

  • Da Frammento 1.2.3: è stato corretto un bug in DialogFragment che causava un errore di StackOverflowError durante la chiamata a getLayoutInflater() dall'interno di onCreateDialog(). (b/117894767, aosp/1258664)
  • Da Fragment 1.2.3: è stato ridotto l'ambito delle regole ProGuard incluse in Fragment per garantire che le classi Fragment inutilizzate possano essere eliminate. (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 oscura il nome della proprietà Kotlin. (b/149891163)
  • Dal componente 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 vengono rilasciati. La versione 1.3.0-alpha01 contiene questi commit.

Nuove funzionalità

Modifiche alle API

  • Il metodo setRetainInstance() in Fragments è stato deprecato. Con l'introduzione dei ViewModels, gli sviluppatori hanno a disposizione un'API specifica per la conservazione dello stato che può essere associata ad attività, frammenti e grafici di navigazione. In questo modo, gli sviluppatori possono utilizzare un normale frammento 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

  • Le regole di ProGuard di Fragment ora mantengono correttamente solo le classi Fragment dei costruttori predefiniti utilizzati anziché per tutte le istanze Fragment, correggendo una regressione introdotta in Fragment 1.2.1. (b/149665169
  • Le regole Lint require___() aggiunte nel Frammento 1.2.2 non generano più falsi positivi per le variabili locali che condividono lo stesso nome dei nomi delle proprietà Kotlin shadowed (ad es. view). (b/149891163)
  • FragmentContainerView non genera più un UnsupportedOperationException quando si utilizza l'anteprima del layout in Android Studio. (b/149707833)
  • Risolto un problema per cui i frammenti conservati aggiunti dopo il salvataggio dello stato non venivano ricreati continuamente e poi eliminati dopo ogni modifica alla 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 vengono rilasciati. La versione 1.2.5 contiene questi commit.

Correzioni di bug

  • getViewLifecycleOwner() del frammento viene ora interrotto prima che venga chiamato onSaveInstanceState(), rispecchiando il comportamento del ciclo di vita del frammento. In precedenza era presente nel Frammento 1.3.0-alpha04. (b/154645875)
  • Ora l'istruzione setMenuVisibility(false) in un frammento modifica correttamente la visibilità dei menu forniti dai relativi frammenti secondari. Questa funzionalità è stata rilasciata in precedenza nel Fragment 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 vengono rilasciati. La versione 1.2.4 contiene questi commit.

Correzioni di bug

  • Sono state aggiornate le regole Fragment ProGuard per consentire l'offuscamento dei frammenti conservati. (b/151605338)
  • È stata disattivata la regola di lint FragmentLiveDataObserve per le classi DialogFragment perché il loro ciclo di vita e il ciclo di vita della visualizzazione sono sempre sincronizzati, quindi è possibile utilizzare this o viewLifecycleOwner quando si chiama observe. (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 vengono rilasciati. La versione 1.2.3 contiene questi commit.

Correzioni di bug

  • È stato corretto un bug in DialogFragment che causava un errore di StackOverflowError durante la chiamata a getLayoutInflater() dall'interno di onCreateDialog(). (b/117894767, aosp/1258665)
  • È stato ridotto l'ambito delle regole ProGuard incluse di Fragment per garantire che le classi Fragment inutilizzate possano essere eliminate. (b/149665169)
  • Sono stati corretti i falsi positivi nel controllo Lint UseRequireInsteadOfGet quando si utilizza un nome di variabile locale che oscura 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 vengono 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 conferma che stai utilizzando il debugImplementation corretto quando utilizzi l'elemento fragment-testing. (b/141500106)
  • Ora Fragments suggerisce 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 sia un equivalente di get che di require. (aosp/1202883)

Correzioni di bug

  • Sono stati corretti i file ProGuard di Fragment per evitare avvisi R8 (b/148963981)
  • È stato migliorato il controllo Lint esistente che suggerisce l'utilizzo di 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 Lint di require___() 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 vengono rilasciati. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • I frammenti aggiunti tramite i metodi add e replace che accettano un'istanza Class (o le versioni con reificazione di Kotlin) ora hanno il loro costruttore predefinito mantenuto da ProGuard. (b/148181315)
  • FragmentStatePagerAdapter e FragmentPagerAdapter non intercettano più le eccezioni lanciate da FragmentManager durante l'esecuzione di finishUpdate(). (aosp/1208711)
  • È stato risolto un problema per cui FragmentManager.findFragment() non funzionava con i frammenti aggiunti tramite il tag <fragment>. (b/147784323)
  • I frammenti gonfiati utilizzando il tag <fragment> ora ricevono sempre una chiamata a onInflate() prima di onCreate() quando sono nel layout. (aosp/1215856)
  • La chiamata di 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 vengono rilasciati. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • FragmentContainerView: FragmentContainerView è il contenitore vivamente consigliato per i frammenti aggiunti dinamicamente, che sostituisce l'utilizzo di FrameLayout o di altri layout. Supporta anche gli stessi valori class, android:name e android:tag facoltativo del tag <fragment>, ma utilizza un normale FragmentTransaction per aggiungere questo frammento iniziale, anziché il percorso di codice personalizzato utilizzato da <fragment>.
  • Tempi di onDestroyView(): ora i frammenti aspettano il completamento delle animazioni di uscita, delle transizioni di uscita del framework e delle transizioni di uscita di AndroidX (se utilizzi Transizione 1.3.0) prima di chiamare onDestroyView().
  • add() e replace() basati su classi: sono stati aggiunti nuovi sovraccarichi 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 frammento da aggiungere. A fragment-ktx sono state aggiunte anche le estensioni Kotlin che utilizzano tipi reificati (ad es.fragmentTransaction.replace<YourFragment>(R.id.container)).
  • Integrazione di SavedState con ViewModel del ciclo di vita: SavedStateViewModelFactory è ora la factory predefinita utilizzata quando si utilizzano by viewModels(), by activityViewModels(), il costruttore ViewModelProvider o ViewModelProviders.of() con un frammento.
  • 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 da un singolo metodo getParentFragmentManager(), che restituisce l'elemento FragmentManager non nullo a cui viene aggiunto il frammento (puoi utilizzare isAdded() per determinare se è sicuro chiamarlo).
  • 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 di DEBUG o VERBOSE senza ricompilare l'app.

Problemi noti

  • I frammenti a cui si fa 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 frammento. (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 vengono rilasciati. La versione 1.2.0-rc05 contiene questi commit.

Correzioni di bug

  • È stata corretta una regressione nel frammento 1.2.0-rc04 quando si utilizza il tag <fragment>, che causava la chiamata errata di onViewCreated() durante l'eliminazione dell'attività. (b/146290333)
  • I frammenti aggiunti con il tag <fragment> ora hanno correttamente la non configurazione cancellata anche se a volte sono presenti nel layout (ad es. solo nel layout orizzontale). Di conseguenza, questi frammenti vengono ora spostati correttamente in CREATED anche quando non sono presenti nel layout, anziché essere istanziati, ma senza mai passare attraverso i metodi di 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 vengono rilasciati. La versione 1.2.0-rc04 contiene questi commit.

Correzioni di bug

  • Sono state regolate 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 vengono 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 frammenti secondari vengono ora interrotti correttamente prima dei relativi elementi principali quando l'attività contenente chiama onSaveInstanceState(). (b/144380645)
  • È stato risolto un problema per cui le visualizzazioni venivano contrassegnate erroneamente come INVISIBLE dopo aver visualizzato un frammento nascosto. (b/70793925)
  • Le transizioni degli elementi condivisi a frammenti ora gestiscono le visualizzazioni che sono state ruotate, ridimensionate e così via (b/142835261)

Aggiornamenti della documentazione

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

Modifiche alle dipendenze

  • Ora i frammenti 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

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-rc02, androidx.fragment:fragment-ktx:1.2.0-rc02 e androidx.fragment:fragment-testing:1.2.0-rc02. La versione 1.2.0-rc02 contiene questi commit.

Correzioni di bug

  • In Kotlin, la correzione Lint per l'utilizzo di getViewLifecycleOwner() quando si osserva LiveData da onCreateView(), onViewCreated() o onActivityCreated() (introdotta nel 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

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-rc01, androidx.fragment:fragment-ktx:1.2.0-rc01 e androidx.fragment:fragment-testing:1.2.0-rc01. 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 il valore DialogInterface trasmesso loro non sia 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'inflazione, 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 problema relativo a UnsupportedOperationException in FragmentContainerView quando la classe FragmentContainerView è offuscata. (b/142657034)

Problemi noti

  • I frammenti a cui si fa 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 frammento. Abbiamo disattivato la regola Lint che suggerisce di passare a FragmentContainerView finché il problema non verrà risolto tramite aapt2. (b/142601969)

Versione 1.2.0-beta02

11 ottobre 2019

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-beta02, androidx.fragment:fragment-ktx:1.2.0-beta02 e androidx.fragment:fragment-testing:1.2.0-beta02. La versione 1.2.0-beta02 contiene questi commit.

Correzioni di bug

  • Risolto un problema per cui onInflate() del frammento non riceveva gli attributi appropriati da FragmentContainerView, causando errori in casi come NavHostFragment. (b/142421837)

Versione 1.2.0-beta01

9 ottobre 2019

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-beta01, androidx.fragment:fragment-ktx:1.2.0-beta01 e androidx.fragment:fragment-testing:1.2.0-beta01. La versione 1.2.0-beta01 contiene questi commit.

Nuove funzionalità

  • FragmentContainerView aggiunge il supporto per l'aggiunta di un frammento iniziale con un supporto aggiuntivo per gli attributi XML android:name e android:tag facoltativi. A differenza del tag <fragment>, FragmentContainerView utilizza un normale FragmentTransaction sottostante per aggiungere il frammento iniziale, consentendo ulteriori operazioni FragmentTransaction su FragmentContainerView e abilita l'utilizzo dell'associazione delle viste per il layout. (b/139830628, b/141177981)
  • Fragments ora contiene un avviso Lint che offre una soluzione rapida per sostituire <fragment> con FragmentContainerView. (b/139830056)

Correzioni di bug

  • È stato corretto un problema ClassCastException quando si utilizza androidx.transition. (b/140680619)
  • Quando utilizzi la transizione 1.3.0-beta01, ora i frammenti aspettano il completamento delle transizioni androidx.transition (oltre alle transizioni e alle animazioni del framework, che sono state corrette rispettivamente in Frammento 1.2.0-alpha03 e Frammento 1.2.0-alpha02) prima di inviare onDestroyView(). (aosp/1119841)
  • Quando utilizzi Transizione 1.3.0-beta01, ora Fragments annulla correttamente le transizioni androidx.transition prima di avviare nuove transizioni / animazioni nello stesso contenitore. (aosp/1119841)
  • È stato risolto un problema nell'API 17 e versioni precedenti quando si utilizzano le transizioni androidx.transition nella vista radice del frammento quando si utilizza FragmentContainerView. (b/140361893)
  • L'elemento fragment-testing ora dipende da AndroidX Test 1.2.0, risolvendo un'incompatibilità con la versione più recente di Espresso 3.2.0. (b/139100149)
  • È stato rimosso l'utilizzo di Log.w in FragmentManager. (aosp/1126468)

Problemi noti

  • Gli elementi onInflate() del frammento non ricevono attributi appropriati da FragmentContainerView, causando errori come NavHostFragment. (b/142421837)

Versione 1.2.0-alpha04

18 settembre 2019

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-alpha04, androidx.fragment-ktx:example:1.2.0-alpha04 e androidx.fragment:fragment-testing:1.2.0-alpha04. La versione 1.2.0-alpha04 contiene questi commit.

Modifiche all'API

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

Correzioni di bug

  • Ora i frammenti vengono distrutti correttamente durante l'esecuzione delle animazioni di uscita su altri frammenti. (b/140574199)
  • È stato risolto un problema per cui i frammenti chiamavano Activity.findViewById(), mentre in precedenza non lo facevano. (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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche all'API

  • FragmentContainerView è diventato final. (b/140133091)

Correzioni di bug

  • Ora FragmentContainerView inverte correttamente l'ordine di disegno quando rimuovi frammenti dalla pila posteriore. (b/139104187)
  • È stato risolto un problema per cui veniva eseguita l'animazione sbagliata quando si apriva un frammento e si aggiungeva un nuovo frammento contemporaneamente. (b/111659726)
  • Ora i frammenti aspettano il completamento delle transizioni (oltre alle animazioni, che è stato corretto nel Frammento 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 rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • SavedStateViewModelFactory è ora la fabbrica 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 FragmentTransaction sono state aggiornate in modo che corrispondano alle animazioni utilizzate dalle attività sui dispositivi Android 10. (aosp/1012812, aosp/1014730)

Modifiche all'API

  • Viene introdotto FragmentContainerView come contenitore vivamente consigliato per i frammenti aggiunti dinamicamente, sostituendo l'utilizzo di FrameLayout e così via, in quanto risolve i problemi di ordinamento Z dell'animazione e l'invio di intestazioni della finestra ai frammenti. (b/37036000, aosp/985243, b/136494650)
  • È stato aggiunto un metodo FragmentManager.findFragment(View) statico per recuperare il frammento contenente da una vista gonfiata da un frammento. In fragment-ktx è disponibile anche un'estensione Kotlin. (aosp/1090757).
  • Sono stati aggiunti nuovi sovraccarichi 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 frammento da aggiungere. A fragment-ktx sono state aggiunte anche le estensioni Kotlin che utilizzano tipi con valori espliciti (ad es.fragmentTransaction.replace<YourFragment>(R.id.container)). (b/126124987)
  • Sono state aggiunte annotazioni @MainThread ai callback del ciclo di vita Fragment. (b/127272564)
  • Le API relative al titolo del breadcrumb su FragmentTransaction e FragmentManager.BackStackEntry sono state ritirate. (b/138252944)
  • Il metodo setTransitionStyle in FragmentTransaction è stato deprecato. (aosp/1011537)
  • Molti dei metodi in FragmentManager non sono più abstract. FragmentManager rimane abstract e non deve essere direttamente istanziato o esteso; devi continuare a ottenere solo un'istanza esistente da getSupportFragmentManager(), getChildFragmentManager() e così via.

Correzioni di bug

  • Da Fragment 1.1.0-rc04: i frammenti ora annullano correttamente le transizioni posticipate quando i frammenti vengono visualizzati. (b/138251858)
  • Da Fragment 1.1.0-rc03: è stato risolto un problema per cui l'uso di postponeEnterTransition() con un timeout più di una volta non annullava i timeout precedenti. (b/137797118)
  • Da Fragment 1.1.0-rc02: è stato corretto un arresto anomalo in FragmentPagerAdapter e FragmentStatePagerAdapter durante la rimozione dell'elemento corrente. (b/137209870)
  • Ora i frammenti aspettano il termine delle animazioni prima di inviare onDestroyView(). (b/136110528)
  • Le animazioni dei frammenti dei frammenti figlio e dei relativi discendenti ora vengono gestite correttamente quando si anima il frammento principale. (b/116675313)
  • È stato corretto un NullPointerException quando si utilizzano le transizioni degli elementi condivisi e si combina un'operazione di pop e aggiunta. (b/120507394)
  • È stata aggiunta una soluzione alternativa ai 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • FragmentManager ora chiama requestApplyInsets() dopo aver collegato la vista del frammento e direttamente prima di chiamare onViewCreated(), assicurandosi che la vista abbia sempre gli inserti corretti. (b/135945162)

Correzioni di bug

  • È stato corretto un NullPointerException quando veniva aperta una 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 vengono 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 frammento in modo isolato. Per maggiori dettagli, vedi Testare la documentazione sui frammenti dell'app.
  • FragmentFactory: ora puoi impostare un FragmentFactory su un FragmentManager per gestire la creazione di istanze di frammenti, rimuovendo il requisito rigoroso di avere un costruttore senza argomenti.
  • Delegati proprietà Kotlin per ViewModels: l'artefatto fragment-ktx ora contiene due delegati per la proprietà Kotlin: by viewModels() per accedere ai ViewModel associati al singolo frammento e by activityViewModels() per accedere ai ViewModels con ambito all'attività.
  • Ciclo di vita massimo: ora puoi impostare uno stato di ciclo di vita massimo per un frammento chiamando setMaxLifecycle() su un FragmentTransaction. Questo sostituisce setUserVisibleHint(), che ora è deprecato. FragmentPagerAdapter e FragmentStatePagerAdapter hanno un nuovo costruttore che ti consente di passare al nuovo comportamento.
  • Costruttore LayoutId di FragmentActivity: ora le sottoclassi di FragmentActivity possono, facoltativamente, chiamare un costruttore in FragmentActivity che accetta un ID R.layout, indicando il layout da impostare come visualizzazione dei contenuti come alternativa alla chiamata di setContentView() in onCreate(). Ciò non cambia il requisito che la sottoclasse abbia un costruttore senza argomenti.
  • Costruttore LayoutId del frammento: le sottoclassi di Fragment ora possono, facoltativamente, chiamare un costruttore in Fragment che accetta un ID R.layout, indicando il layout da utilizzare per questo frammento come alternativa all'override di onCreateView(). Il layout espanso può essere configurato in onViewCreated().
  • Rinvia con un timeout: è stato aggiunto un nuovo sovraccarico di postponeEnterTransition() che prevede un timeout.

Versione 1.1.0-rc04

7 agosto 2019

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

Correzioni di bug

  • I frammenti ora annullano correttamente le transizioni posticipate su Frammenti sono stati sbloccati. (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 rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • È stato risolto un problema per cui chiamare postponeEnterTransition() con un timeout più di una volta non annullava i timeout precedenti. (b/137797118)

Versione 1.1.0-rc02

17 luglio 2019

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-rc02, androidx.fragment:fragment-ktx:1.1.0-rc02 e androidx.fragment-testing:fragment:1.1.0-rc02. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • È stato corretto 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Correzioni di bug

  • Ora i frammenti aggiornano correttamente la propria visibilità quando si utilizzano le operazioni show() o hide() mentre è in corso la transizione. (b/133385058)
  • È stato corretto un NullPointerException quando veniva aperta una 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 vengono 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 istanze di OnBackPressedCallback registrate in onCreate() di un frammento ora hanno la precedenza sul FragmentManager secondario. (b/133175997)
  • I frammenti secondari non vengono più animati quando il frammento principale viene sostituito. (b/121017790)
  • Le animazioni e le transizioni dei frammenti vengono ora ignorate quando si utilizza animateLayoutChanges="true", risolvendo un problema per cui i frammenti non venivano distrutti 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche all'API

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

Correzioni di bug

  • Gli elementi del menu visualizzati da un frammento secondario vengono ora rimossi correttamente quando viene rimosso il frammento 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Questa release non è compatibile con le preferenze da 1.1.0-alpha01 a 1.1.0-alpha04. Esegui l'upgrade a Preferenze 1.1.0-alpha05 quando utilizzi questa versione di Fragments.

Nuove funzionalità

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

Modifiche alle API

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

Correzioni di bug

  • I frammenti di cui è stato limitato il ciclo di vita tramite setMaxLifecycle() non vengono più ripresi prima di raggiungere il loro stato finale. b/131557151
  • Quando utilizzi setMaxLifecycle(Lifecycle.State.CREATED), la visualizzazione dei frammenti viene distrutta 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

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

Modifiche all'API

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

Cambiamenti del comportamento

  • Come conseguenza di (b/129907905), i frammenti nello stack precedente non riceveranno un callback a onCreateView() quando l'attività di hosting viene ricreata. Ora onCreateView() verrà chiamato solo quando il frammento diventa visibile (ovvero quando viene estratta la pila precedente).

Correzioni di bug

  • È stato risolto un problema relativo all'utilizzo di un tag <fragment> in XML e del costruttore contentLayoutId di FragmentActivity o AppCompatActivity. (b/129907905)
  • È stato corretto un problema per cui i frammenti nello stack precedente non venivano spostati in almeno CREATED dopo una modifica alla configurazione, causando il mancato smaltimento corretto dei ViewModel e dei frammenti conservati secondari. (b/129593351)
  • È stato risolto 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 relativi al fatto che un OnBackPressedCallback aggiunto con il ciclo di vita di un frammento non veniva chiamato se il FragmentManager aveva una pila di ritorno. Per ulteriori dettagli, consulta androidx.activity 1.0.0-alpha07. (aosp/948209)
  • I frammenti 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Le eccezioni lanciate da FragmentManager ora includono il nome del frammento 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 dell'app che in quelli della libreria. (b/128352521)
  • onActivityResult() di FragmentActivity ora è contrassegnato correttamente come @CallSuper. (b/127971684)
  • Il metodo instantiate di FragmentFactory che accetta un parametro Bundle è stato ritirato e le app devono utilizzare il nuovo sovraccarico instantiate che non accetta un Bundle. (b/128836103)
  • I metodi FragmentScenario sono ora annotati correttamente con @StyleRes. (aosp/924193)
  • L'API FragmentTabHost è stata deprecata. (b/127971835)
  • L'elemento getThemedContext() di FragmentActivity è stato rimosso. (aosp/934078)

Correzioni di bug

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

Versione 1.1.0-alpha05

13 marzo 2019

Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-alpha05, androidx.fragment:fragment-ktx:1.1.0-alpha05 e androidx.fragment:fragment-testing:1.1.0-alpha05. L'elenco completo dei commit inclusi in questa versione è disponibile qui.

Nuove funzionalità

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

Cambiamenti del comportamento

  • Ora, se chiami remove(), hide(), show(), detach() e setPrimaryNavigationFragment() con un frammento collegato a un altro FragmentManager, viene generato un IllegalStateException anziché un errore silenzioso (aosp/904301)

Correzioni di bug

  • onNewIntent per FragmentActivity è ora contrassegnato correttamente con @CallSuper (b/124120586)
  • Risolto un problema per cui il onDismiss() di DialogFragment poteva essere chiamato due volte quando si utilizza getDialog().dismiss() o getDialog().cancel() (b/126563750)

Versione 1.1.0-alpha04

7 febbraio 2019

Vengono rilasciate le funzionalità androidx.fragment:fragment 1.1.0-alpha04, androidx.fragment:fragment-ktx 1.1.0-alpha04 e androidx.fragment:fragment-testing 1.1.0-alpha04.

Nuove funzionalità

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

Modifiche all'API

  • È stato aggiunto un metodo requireArguments() che restituisce un @NonNull Bundle o genera un IllegalStateException (b/121196360)
  • È stata aggiunta una nota che indica che getLifecycle(), getViewLifecycleOwner() e getViewLifecycleOwnerLiveData() non devono essere sostituiti e saranno resi definitivi in una release futura. Invia una richiesta di funzionalità se al momento stai sostituendo questo metodo. (aosp/880714)
  • È stata aggiunta una nota che indica che getViewModelStore() non deve essere sostituito e che verrà reso definitivo in una versione futura. Invia una richiesta di funzionalità se al momento stai sostituendo questo metodo. (aosp/880713)
  • È stato risolto un problema di compatibilità binaria con le release precedenti di Fragments. (aosp/887877) (aosp/889834)

Correzioni di bug

  • I frammenti di destinazione vengono cancellati correttamente quando passi null a setTargetFragment(). (aosp/849969)
  • È stato risolto un problema per cui i frammenti target a volte non erano disponibili in onDestroy() o versioni successive. (b/122312935)
  • La funzione onIgnora() di DialogFragment viene ora chiamata prima di onDestroy(). (aosp/874133) (aosp/890734)

Versione 1.1.0-alpha03

17 dicembre 2018

Nuove funzionalità

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

Modifiche all'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 un'eccezione ""C" perché valida: errore durante il salvataggio dello stato b/120814739.
  • I frammenti che vengono ripristinati dallo stato dell'istanza salvata ora riceveranno sempre un valore Bundle non nullo [b/119794496]
  • I frammenti rimossi non riutilizzano più l'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 del frammento come alternativa al passaggio di un'istanza FragmentFactory. (aosp/812913)

Correzioni di bug

  • È stato corretto un IllegalStateException quando si utilizzano frammenti nidificati nella pila di ritorno (b/119256498)
  • È stato corretto l'arresto anomalo durante l'utilizzo di FragmentScenario.recreate() con un FragmentFactory (aosp/820540)
  • È stato risolto un problema per cui i frammenti target non erano accessibili dopo la rimozione del frammento (aosp/807634)

Versione 1.1.0-alpha01

5 novembre 2018

Questa è la prima release dell'elemento fragment-testing e di FragmentScenario, basata sulle API androidx.test:core. Per ulteriori dettagli, consulta la documentazione relativa ai test dei frammenti.

Nuove funzionalità

  • Nuova classe FragmentScenario per testare i frammenti in modo isolato.
  • Ora puoi impostare un valore FragmentFactory su qualsiasi FragmentManager per controllare la modalità di creazione dell'istanza delle nuove istanze Fragment.
  • È stato aggiunto un nuovo by viewModels()delegato della proprietà Kotlin per il recupero di ViewModel da un frammento.
  • Gli eventi di input in attesa (come i clic) vengono ora annullati nell'elemento onStop() di un frammento.

Modifiche all'API

  • Sono state ampliate in modo significativo le annotazioni relative alla nullità nell'ambito dell'API Fragment.

Correzioni di bug

  • Risolto un problema che causava l'errore delle operazioni sui frammenti da LiveData (b/77944637)

Problemi noti

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