Frammento
Aggiornamento più recente | Release stabile | Candidato per l'uscita | Versione beta | Release alpha |
---|---|---|---|---|
24 luglio 2024 | 1.8.2 | - | - | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza su Fragment, devi aggiungere il Repository Maven di Google al tuo progetto. Consulta il Repository Maven di Google per ulteriori informazioni.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
Alla moda
dependencies { def fragment_version = "1.8.2" // 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.2" // Java language implementation implementation("androidx.fragment:fragment:$fragment_version") // Kotlin implementation("androidx.fragment:fragment-ktx:$fragment_version") // Compose implementation("androidx.fragment:fragment-compose:$fragment_version") // Testing Fragments in Isolation debugImplementation("androidx.fragment:fragment-testing:$fragment_version") }
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.
Consulta la documentazione di Issue Tracker per ulteriori informazioni.
Versione 1.8
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 nella pila posteriore Fragment, evitando "Nessuna visualizzazione trovata per l'ID" quando si torna a quel frammento. (I94608)- I frammenti aggiunti tramite il metodo
FragmentTransaction.add
che richiedono unViewGroup
ora attendono peronContainerAvailable
prima di passare aonStart()
. Questo riguarda gli utenti dell'API in questione, comeAndroidFragment
, che ora attende cheAndroidFragment
entri di nuovo nella composizione prima di spostarla attraversoonStart()
. (I94608)
Versione 1.8.1
26 giugno 2024
Viene rilasciato androidx.fragment:fragment-*:1.8.1
. 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 Indietro predittivo. Ora vengono mantenuti nello statoCREATED
fino al completamento del gesto. (If6b83, b/345244539)
Versione 1.8.0
12 giugno 2024
Viene rilasciato androidx.fragment:fragment-*:1.8.0
. La versione 1.8.0 contiene questi commit.
Modifiche importanti dalla versione 1.7.0
- L'artefatto
fragment-compose
ora contiene unAndroidFragment
Composable
che consente di aggiungere frammenti nella gerarchia di Compose tramite il nome della classe dei frammenti. Gestisce automaticamente il salvataggio e il ripristino dello stato del Frammento. Da utilizzare in sostituzione diretta dell'approccio precedentemente consigliato di utilizzo diAndroidViewBinding
per gonfiare un Frammento. - Il callback
onBackStackChangeCancelled
nell'interfacciaOnBackStackChangedListener
diFragmentManager
ora viene attivato durante l'esecuzione delle operazioni inFragmentManager
, avvicinandolo in base alle tempistiche del callbackonBackStackChangeCommitted
.
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'interfacciaFragmentManagers OnBackStackChangedListener
ora viene attivato durante l'esecuzione delle operazioni inFragmentManager
, avvicinandolo in base alle tempistiche del callbackonBackStackChangeCommitted
. (I5ebfb, b/332916112)
Versione 1.8.0-beta01
14 maggio 2024
Viene rilasciato androidx.fragment:fragment-*:1.8.0-beta01
. La versione 1.8.0-beta01 contiene questi commit.
Correzioni di bug
- Da Frammento
1.7.1
: il valore predittivo indietro ora viene 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 dello schermo nero. (I43037, b/339169168)
Versione 1.8.0-alpha02
17 aprile 2024
Viene rilasciato androidx.fragment:fragment-*:1.8.0-alpha02
. 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 unsharedElement
senza altre transizioni non riuscirà. (Iec48e) - Da Frammento
1.7.0-rc02
: è stato corretto un bug per cui si verificava un arresto anomalo se veniva aggiunto un elemento condiviso non cercabile a una transazione in cui tutte le altre transizioni erano ricercabili. Ora la transazione verrà considerata correttamente non cercabile. (I18ccd)
Versione 1.8.0-alpha01
3 aprile 2024
Viene rilasciato androidx.fragment:fragment-*:1.8.0-alpha01
. 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 dei frammenti. Gestisce automaticamente il salvataggio e il ripristino dello stato del Frammento. Può essere usato in sostituzione diretta di AndroidViewBindingComposable
.(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
- Il frammento ora dipende dal Programma di installazione profilo 1.3.1.
Versione 1.7
Versione 1.7.1
14 maggio 2024
Viene rilasciato androidx.fragment:fragment-*:1.7.1
. La versione 1.7.1 contiene questi commit.
Correzioni di bug
- Il valore 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
Viene rilasciato androidx.fragment:fragment-*:1.7.0
. La versione 1.7.0 contiene questi commit.
Supporto predittivo del gesto Indietro
- I frammenti ora forniscono il supporto per predittivo 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 o la transizione prima di decidere se eseguire il commit della transazione completando il gesto o annullando l'operazione.
Sistema di transizione | Risorsa XML | Supporta la funzionalità Indietro predittiva |
---|---|---|
Animation |
R.anim |
No |
Animator |
R.animator |
Sì |
Framework Transition |
R.transition |
No |
AndroidX Transition con Transizione 1.4.1 o versioni precedenti |
R.transition |
No |
AndroidX Transition con Transizione 1.5.0 |
R.transition |
Sì |
Se riscontri problemi con il supporto predittivo Indietro in Fragments dopo aver attivato il gesto Indietro predittivo, segnala il problema relativo a Fragment con un progetto di esempio che lo riproduca. Puoi disattivare la funzionalità predittiva usando FragmentManager.enabledPredictiveBack(false)
in onCreate()
della tua Attività.
FragmentManager.OnBackStackChangedListener()
ora fornisce onBackStackChangeProgressed()
e onBackStackChangeCancelled()
per ricevere rispettivamente l'avanzamento predittivo e gli eventi annullati.
Artefatto Composizione frammento
È stato creato un nuovo artefatto fragment-compose
incentrato sulle app di supporto in fase di passaggio da un'architettura basata su Fragment a un'architettura interamente basata su Compose.
La prima funzionalità disponibile in questo nuovo artefatto è un metodo di estensione content
su Fragment
che mira a semplificare l'utilizzo di Compose per 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
- Log aggiunti per indicare il motivo per cui l'impostazione di un
sharedElement
senza altre transizioni non riuscirà. (Iec48e) - È stato corretto un bug per cui si verificava un arresto anomalo se veniva aggiunto un elemento condiviso non cercabile a una transazione in cui tutte le altre transizioni erano ricercabili. Ora la transazione verrà considerata correttamente non cercabile. (I18ccd)
Versione 1.7.0-rc01
3 aprile 2024
Viene rilasciato androidx.fragment:fragment-*:1.7.0-rc01
. La versione 1.7.0-rc01 contiene questi commit.
Aggiornamento delle dipendenze
- Il frammento ora dipende dal Programma di installazione profilo 1.3.1.
Versione 1.7.0-beta01
20 marzo 2024
Viene rilasciato androidx.fragment:fragment-*:1.7.0-beta01
. La versione 1.7.0-beta01 contiene questi commit.
Modifiche alle API
FragmentHostCallback
è ora scritto in Kotlin, in modo che il valore null del tipo generico dell'host corrisponda a quello del tipo restituito dionGetHost()
. (I40af5)
Correzioni di bug
- È stato risolto un problema per cui, quando si esegue un gesto Indietro predittivo su un frammento che non si trova in un contenitore, questo frammento non verrebbe mai distrutto. Il Frammento verrà spostato immediatamente allo stato finale. (Ida0d9)
- È stato risolto un problema in Frammenti per cui l'interruzione delle transizioni in arrivo con un gesto predittivo Indietro distruggeva la visualizzazione in entrata e lasciava una schermata vuota. (Id3f22, b/319531491)
Versione 1.7.0-alpha10
7 febbraio 2024
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha10
. La versione 1.7.0-alpha10 contiene questi commit.
Correzioni di bug
- È stato risolto il problema noto nella precedente release Fragment in cui, utilizzando il supporto predittivo Indietro di Fragment per
Animator
o la transizione ad AndroidX, Fragments generava unNullPointerException
dahandleOnBackProgressed
se non è mai stato aggiuntoFragmentManager.OnBackStackChangedListener
tramiteaddOnBackStackChangedListener
. (I7c835)
Versione 1.7.0-alpha09
24 gennaio 2024
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha09
. La versione 1.7.0-alpha09 contiene questi commit.
Artefatto Composizione frammento
È stato creato un nuovo artefatto fragment-compose
incentrato sulle app di supporto in fase di passaggio da un'architettura basata su Fragment a un'architettura interamente basata su Compose.
La prima funzionalità disponibile in questo nuovo artefatto è un metodo di estensione content
su Fragment
che mira a semplificare l'utilizzo di Compose per l'UI 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 fornisceonBackStackChangeProgressed()
eonBackStackChangeCancelled()
per ricevere rispettivamente l'avanzamento predittivo e gli eventi annullati. (214b87)
Problema noto
- Quando utilizzi il supporto predittivo Indietro di Fragment per
Animator
o la Transizione AndroidX, Fragments genererà unNullPointerException
dahandleOnBackProgressed
se non è mai stato aggiuntoFragmentManager.OnBackStackChangedListener
tramiteaddOnBackStackChangedListener
. L'aggiunta manuale di un listener consente di aggirare l'arresto anomalo. Sarà disponibile una correzione per questo problema nella prossima versione di Fragments.
Versione 1.7.0-alpha08
10 gennaio 2024
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha08
. La versione 1.7.0-alpha08 contiene questi commit.
Pulizia
- È stata rimossa la soluzione alternativa per la Libreria di transizione che è stata corretta nella Transizione
1.5.0-alpha06
. (I04356)
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) - Da Frammento
1.6.2
: quando il frammento di unFragmentContainerView
è gonfiato, i suoi stati comeFragmentManager
, Host e ID sono ora accessibili nel callbackonInflate
. (I1e44c, b/307427423) - Da Frammento
1.6.2
: quando utilizziclearBackStack
per rimuovere un insieme di frammenti, tutti gli elementiViewModel
di Frammento nidificati verranno cancellati quando i valoriViewModels
del frammento principale verranno cancellati. (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 transizione1.5.0-alpha04
.
Versione 1.7.0-alpha05
20 settembre 2023
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha05
. La versione 1.7.0-alpha05 contiene questi commit.
Nuove funzionalità
- I frammenti ora forniscono supporto per predittivo indietro 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 annullare la transazione tramite il gesto completato. Per attivare questa funzionalità devi dipendere dalla release Transizione
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. La causa potrebbe essere un problema nella Libreria di transizione. (b/300157785). Se riscontri questo problema, segnala il problema a Fragment con un progetto di esempio che lo riproduca. Puoi disattivare la funzionalità predittiva usando
FragmentManager.enabledPredictiveBack(false)
inonCreate()
della tua Attività.
Versione 1.7.0-alpha04
6 settembre 2023
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha04
. La versione 1.7.0-alpha04 contiene questi commit.
Correzioni di bug
- È stato risolto un problema durante l'annullamento di un gesto Indietro predittivo in cui i frammenti non riuscivano a raggiungere lo stato del ciclo di vita corretto. (I7cffe, b/297379023)
- È stato corretto un problema di regressione in cui era consentita l'esecuzione delle animazioni con le transizioni. (I59f36)
- È stato risolto un problema di utilizzo predittivo con frammenti per cui il tentativo di tornare indietro due volte in rapida successione dal penultimo all'ultimo frammento nello stack posteriore causava un arresto anomalo. (Ifa1a4)
Versione 1.7.0-alpha03
23 agosto 2023
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha03
. La versione 1.7.0-alpha03 contiene questi commit.
Correzioni di bug
- È stato risolto un problema relativo a Frammenti durante l'utilizzo di Indietro predittivo che causava l'ignoramento del primo frammento nella pila dorsale del gestore di frammenti e il completamento dell'attività quando si utilizzava Indietro del sistema tramite la navigazione con tre pulsanti o il gesto Indietro predittivo. (I0664b, b/295231788)
Versione 1.7.0-alpha02
9 agosto 2023
Viene rilasciato androidx.fragment:fragment-*:1.7.0-alpha02
. La versione 1.7.0-alpha02 contiene questi commit.
Correzioni di bug
- Se usi Frammenti con gesti predittivi Indietro dall'API 34, se usi un sistema di transizione che non supporta la ricerca (
Animations
,Transitions
) o nessuna transizione, Frammenti 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 supportano la funzionalità predittiva in-app quando viene usato
Animator
. In questo modo puoi utilizzare il gesto Indietro per visualizzare il frammento precedente con il tuo Animator personalizzato prima di decidere se eseguire il commit della transazione tramite il gesto completato o annullare l'operazione. Puoi anche disattivare questo nuovo comportamento utilizzando l'esperimento sperimentaleenablePredictiveBack()
e passandofalse
.
Versione 1.6
Versione 1.6.2
1° novembre 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.2
. La versione 1.6.2 contiene questi commit.
Correzioni di bug
- Quando il frammento di un
FragmentContainerView
è gonfiato, i suoi stati comeFragmentManager
, Host e ID sono ora accessibili nel callbackonInflate
. (I1e44c, b/307427423) - Quando utilizzi
clearBackStack
per rimuovere un insieme di frammenti, gli elementiViewModel
di tutti i frammenti nidificati verranno ora cancellati quando i valoriViewModels
del frammento principale verranno cancellati. (I6d83c, b/296173018)
Versione 1.6.1
26 luglio 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.1
. La versione 1.6.1 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui lo stato salvato, archiviato quando l'attività veniva interrotta ma non eliminata, veniva memorizzato in modo errato nella cache anche dopo aver riportato l'istanza del frammento allo stato
RESUMED
. Ciò causa il riutilizzo dello stato memorizzato nella cache se l'istanza del frammento si trovava in back stack quando si utilizza l'API multiple back stack per salvare e ripristinare il frammento. (I71288, b/246289075)
Aggiornamento delle dipendenze
- Il frammento ora dipende dall'Attività 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
Viene rilasciato androidx.fragment:fragment-*:1.6.0
. 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 (classiParcelable
personalizzate) e lo stato fornito dallo sviluppatore, che ora è sempre archiviato in unBundle
che consente di determinare esattamente da dove proviene lo stato di un frammento. - L'interfaccia
FragmentManager.OnBackStackChangedListener
è stata espansa con due callback aggiuntivi dionBackStackChangeStarted
eonBackStackChangeCommitted
che vengono chiamati con ogniFragment
subito prima di essere aggiunti/rimossi dallo stack posteriore dei frammenti e subito dopo il commit della transazione. FragmentStrictMode
ha aggiunto un nuovoWrongNestedHierarchyViolation
che rileva quando un frammento secondario è nidificato all'interno della gerarchia View dell'elemento principale, ma non viene aggiunto al segmentochildFragmentManager
dell'elemento principale.- Le API
Fragment
eFragmentManager
che utilizzano un valoreIntent
oIntentSender
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 alComponentDialog
sottostante tramite l'APIrequireComponentDialog()
.- Il frammento ora dipende dal ciclo di vita
2.6.1
. - Il frammento ora dipende da SavedState
1.2.1
. - Il frammento ora 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 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 al disallineamento delle versioni tra
fragment-testing
eandroidx.test
.
Versione 1.6.0-rc01
10 maggio 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.0-rc01
. 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ù richiestestartActivityForResult
consecutivamente. (If0b9d, b/249519359) - È stato 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 hanno questo valore. (I0eb5c, b/279306628)
Versione 1.6.0-beta01
19 aprile 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.0-beta01
. La versione 1.6.0-beta01 contiene questi commit.
Correzioni di bug
- L'uso di
postponeEnterTransition
con un timeout e la successiva sostituzione del frammento posticipato non comporta più la perdita del frammento posticipato. (I2ec7d, b/276375110) - I nuovi callback
onBackStackChangeStarted
eonBackStackChangeCommitted
ora invieranno un frammento una sola volta, anche se più transazioni contengono lo stesso frammento. (Ic6b69)
Versione 1.6.0-alpha09
5 aprile 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.0-alpha09
. La versione 1.6.0-alpha09 contiene questi commit.
Modifiche alle API
DialogFragment
ora fornisce l'accesso alComponentDialog
sottostante tramite l'APIrequireComponentDialog()
. (I022e3, b/234274777)- Le API del frammento
commitNow()
,executePendingTransactions()
epopBackStackImmediate()
sono state annotate con@MainThread
, il che significa che ora tutte genereranno errori di build quando non vengono chiamate dal thread principale, anziché attendere l'errore in fase di runtime. (Ic9665, b/236538905)
Correzioni di bug
- È stato corretto un bug in
FragmentManager
per cui il salvataggio e il ripristino nello stesso frame potevano causare un arresto anomalo. (Ib36af, b/246519668) - I callback
OnBackStackChangedListener
onBackStackChangeStarted
eonBackStackChangeCommitted
ora vengono eseguiti solo quando lo stack backFragmentManager
viene modificato. (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.
Cambiamento del comportamento
- La tempistica del callback
OnBackStackChangedListener.onBackStackChangeCommited
è stata modificata in modo che venga eseguita prima delle operazioni con i frammenti. In questo modo, il callback non verrà mai passato un frammento scollegato. (I66a76, b/273568280)
Correzioni di bug
- Da Frammento
1.5.6
: è stato risolto un problema per cui la chiamata aclearFragmentResultListener
all'interno di unsetFragmentResultListener
non funzionava seLifecycle
era giàSTARTED
e un risultato era già disponibile. (If7458)
Aggiornamenti delle dipendenze
- Il frammento ora dipende dal ciclo di vita
2.6.1
. (586fe7) - Il frammento ora dipende da SavedState
1.2.1
. (078e4e) - Il frammento ora dipende da ProfileInstaller
1.3.0
. (3fc05b)
Versione 1.6.0-alpha07
8 marzo 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.0-alpha07
. La versione 1.6.0-alpha07 contiene questi commit.
Correzioni di bug
- Da Frammento
1.5.6
: è stato risolto un problema per cui la rimozione di un Frammento, indipendentemente dal fatto che avesse aggiunto voci di menu o meno, rendeva il menu dell'attività non valido. (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.
Cambiamento del comportamento
- Il nuovo callback
onBackStackChangedStarted
suonBackStackChangedListener
diFragmentManager
verrà eseguito prima che i frammenti inizino a essere spostati negli stati di destinazione. (I34726)
Versione 1.6.0-alpha05
8 febbraio 2023
Viene rilasciato androidx.fragment:fragment-*:1.6.0-alpha05
. La versione 1.6.0-alpha05 contiene questi commit.
Nuove funzionalità
- L'interfaccia
FragmentManager.OnBackStackChagnedListener
ora offre due callback aggiuntivi,onBackStackChangeStarted
eonBackStackChangeCommitted
, che consentono di ottenere informazioni aggiuntive e di controllare quando vengono apportate modifiche allo stack precedente inFragmentManager
. (Ib7ce5, b/238686802)
Modifiche alle API
- Le API
Fragment
eFragmentManager
che utilizzano un valoreIntent
oIntentSender
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. (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 nuovoWrongNestedHierarchyViolation
che rileva quando un frammento secondario è nidificato all'interno della gerarchia View dell'elemento principale, ma non viene aggiunto al segmentochildFragmentManager
dell'elemento principale. (I72521, b/249299268)
Cambiamenti del comportamento
- Ora i frammenti ripristinano lo stato
SavedStateRegistry
prima del giornoonAttach()
, assicurando che sia disponibile in tutti i metodi del ciclo di vita successivo. (I1e2b1).
Modifiche alle API
- L'artefatto
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 a un disallineamento 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 statoViewModel
come parte dello stato salvato del registro di 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 alle API
- Ora le classi che estendono
DialogFragment
dovranno chiamare la funzionalità Super negli override dionDismiss()
. (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 Frammento
1.5.2
: è stato risolto un problema per cui l'esecuzione simultanea di una transazionepopBackStack()
e unareplace()
poteva causare l'esecuzione dei frammentiAnimation
/Animator
errati. (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.
Cambiamenti del comportamento
- Lo stato salvato di
Fragment
è stato completamente suddiviso tra lo stato della libreria privata (classiParcelable
personalizzate) e lo stato fornito dallo sviluppatore, che ora è sempre archiviato in unBundle
che consente di determinare esattamente da dove proviene lo stato di un frammento. (b/207158202)
Correzioni di bug
- Da Frammento
1.5.1
: correggi una regressione inDialogFragmentCallbacksDetector
per cui l'utilizzo della versione lint in bundle con AGP 7.4 causava l'arresto anomalo del lint. (b/237567009)
Aggiornamento delle dipendenze
- Da Frammento
1.5.1
: la libreria Framment ora dipende dal Ciclo di vita2.5.1
. (ID204c) - Da Frammento
1.5.1
: la libreria Frammenti ora dipende dall'Attività1.5.1
. (I10f07)
Versione 1.5
Versione 1.5.7
19 aprile 2023
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.7
, androidx.fragment:fragment-ktx:1.5.7
e androidx.fragment:fragment-testing:1.5.7
. La versione 1.5.7 contiene questi commit.
Correzioni di bug
- L'uso 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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.6
, androidx.fragment:fragment-ktx:1.5.6
e androidx.fragment:fragment-testing:1.5.6
. 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 di 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 unsetFragmentResultListener
non funzionava seLifecycle
era giàSTARTED
e un risultato era già disponibile. (If7458)
Versione 1.5.5
7 dicembre 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.5
, androidx.fragment:fragment-ktx:1.5.5
e androidx.fragment:fragment-testing:1.5.5
. La versione 1.5.5 contiene questi commit.
Correzioni di bug
- I frammenti non salveranno più erroneamente lo stato
ViewModel
come parte dello stato salvato del registro di visualizzazione. (I10d2b, b/253546214)
Versione 1.5.4
24 ottobre 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.4
, androidx.fragment:fragment-ktx:1.5.4
e androidx.fragment:fragment-testing:1.5.4
. La versione 1.5.4 contiene questi commit.
Correzioni di bug
- È stato corretto un errore per cui l'utilizzo di un valore
FragmentController
personalizzato con un host che non implementa un'interfaccia di callback del fornitore (OnConfigurationChangedProvider
,OnMultiWindowModeChangedProvider
,OnTrimMemoryProvider
,OnPictureInPictureModeChangedProvider
) e la chiamata della sua funzione di invio deprecata non permetteva l'invio ai frammenti figlio. (I9b380).
Versione 1.5.3
21 settembre 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.3
, androidx.fragment:fragment-ktx:1.5.3
e androidx.fragment:fragment-testing:1.5.3
. La versione 1.5.3 contiene questi commit.
Correzioni di bug
- È stato corretto un errore che causava il recupero di callback
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
eonConfigurationChanged()
dai frammenti sullo stack posteriore. (I34581, I8dfe6, b/242570955) - I frammenti secondari nidificati non riceveranno più callback
onMultiWindowModeChanged()
,onPictureInPictureModeChanged()
,onLowMemory()
oonConfigurationChanged()
. (I690b3, Id0096, If9d6b, I2cba2)
Versione 1.5.2
10 agosto 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.2
, androidx.fragment:fragment-ktx:1.5.2
e androidx.fragment:fragment-testing:1.5.2
. 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 unareplace()
poteva causare l'esecuzione dei frammentiAnimation
/Animator
errati. (Ib1c07, b/214835303)
Versione 1.5.1
27 luglio 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.1
, androidx.fragment:fragment-ktx:1.5.1
e androidx.fragment:fragment-testing:1.5.1
. La versione 1.5.1 contiene questi commit.
Correzioni di bug
- Correggi un problema di 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
- La libreria Fragment ora dipende dal ciclo di vita
2.5.1
. (ID204c) - La libreria dei frammenti ora dipende dall'attività
1.5.1
. (I10f07)
Versione 1.5.0
29 giugno 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0
, androidx.fragment:fragment-ktx:1.5.0
e androidx.fragment:fragment-testing:1.5.0
. La versione 1.5.0 contiene questi commit.
Modifiche importanti dalla versione 1.4.0
- Integrazione CreationExtras:
Fragment
ora è in grado di fornire unViewModelProvider.Factory
stateless tramiteCreationExtras
di Lifecycle2.5.0
. - Integrazione della finestra di dialogo dei componenti:
DialogFragment
ora utilizzaComponentDialog
tramite Attività1.5.0
come finestra di dialogo predefinita restituita daonCreateDialog()
. - Refactoring dello stato dell'istanza salvata: i frammenti hanno iniziato a modificare la modalità di salvataggio dello stato dell'istanza. Si tratta di uno sforzo per aiutare a identificare chiaramente quale stato è stato salvato nel frammento e la fonte dello stato. Le modifiche attuali includono:
FragmentManager
ora salva lo stato dell'istanza salvato inBundle
anziché direttamente in unParcelable
personalizzato.- I risultati impostati tramite la
Fragment Result APIs
che non sono ancora stati pubblicati vengono salvati separatamente dallo stato interno diFragmentManager
. - 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 diFragment
.
Altre modifiche
FragmentStrictMode
ora consente ai frammenti privati di terze parti di bypassare specifiche sanzioni per le violazioni utilizzandoallowViolation()
con il nome della classe.- Le API Fragment per fornire un menu all'elemento
ActionBar
della tua attività sono state deprecate. Le APIMenuHost
eMenuProvider
aggiunte in Attività1.4.0
forniscono una superficie API equivalente testabile e consapevole del ciclo di vita che dovrebbe essere utilizzata dai frammenti.
Versione 1.5.0-rc01
11 maggio 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-rc01
, androidx.fragment:fragment-ktx:1.5.0-rc01
e androidx.fragment:fragment-testing:1.5.0-rc01
. 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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-beta01
, androidx.fragment:fragment-ktx:1.5.0-beta01
e androidx.fragment:fragment-testing:1.5.0-beta01
. La versione 1.5.0-beta01 contiene questi commit.
Modifiche alle API
DialogFragment
ha aggiunto un nuovo metododismissNow
che utilizzacommitNow
per avere parità con la funzioneshowNow
. Tieni presente che in questo modoDialog
non verrà ignorato immediatamente, ma verrà aggiornato solo in modo sincrono lo stato diFragmentManager
. (I15c36, b/72644830)
Refactoring dello stato dell'istanza salvata
FragmentManager
ora salva lo stato dell'istanza salvato inBundle
anziché direttamente in unParcelable
personalizzato. Questo è il primo passo per offrire 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 alle API
- L'elemento
setHasOptionsMenu()
diFragment
è stato deprecato. Per gestire i menu e le relative voci di menu, utilizza invece le nuove API di menu, come indicato nelle note di rilascio relative al frammento1.5.0-alpha04
. (I7b4b4, b/226438239)
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 alle 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 APIMenuHost
eMenuProvider
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 diCreationExtras
anche se è stato inizializzato conSavedStateRegistryOwner
. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583)
Versione 1.5.0-alpha03
23 febbraio 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-alpha03
, androidx.fragment:fragment-ktx:1.5.0-alpha03
e androidx.fragment:fragment-testing:1.5.0-alpha03
. La versione 1.5.0-alpha03 contiene questi commit.
Modifiche alle API
- Ora puoi passare
CreationExtras
perby viewModels()
e Funzioniby activityViewModels()
. (Ibefe7, b/217601110)
Cambiamenti del comportamento
DialogFragment
ora utilizzaComponentDialog
come impostazione predefinita finestra di dialogo restituita daonCreateDialog()
. (If3784, b/217618170)
Versione 1.5.0-alpha02
9 febbraio 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-alpha02
, androidx.fragment:fragment-ktx:1.5.0-alpha02
e androidx.fragment:fragment-testing:1.5.0-alpha02
. La versione 1.5.0-alpha02 contiene questi commit.
Nuove funzionalità
FragmentStrictMode
ora consente ai frammenti privati di terze parti di bypassare specifiche sanzioni per le violazioni utilizzandoallowViolation()
con il nome della classe. (I8f678)
Versione 1.5.0-alpha01
26 gennaio 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.5.0-alpha01
, androidx.fragment:fragment-ktx:1.5.0-alpha01
e androidx.fragment:fragment-testing:1.5.0-alpha01
. La versione 1.5.0-alpha01 contiene questi commit.
Nuove funzionalità
Fragment
ora si integra con ViewModel CreationExtras, introdotto come parte di Lifecycle2.5.0-alpha01
. (I3060b, b/207012585)
Correzioni di bug
- Da Frammento
1.4.1
:FragmentContainerView
non genera più uno stato illegale eccezione quando gli ID vista generati da XML hanno valori negativi. (Ic185b, b/213086140) - Da Frammento
1.4.1
: quando utilizzi una lambdaownerProducer
personalizzata con la funzione lazyby viewModels()
, ora utilizzerà ildefaultViewModelProviderFactory
di quel proprietario se non viene fornito unViewModelProvider.Factory
personalizzato, invece di usare sempre il valore di fabbrica del frammento. (I56170, b/214106513) - È stato corretto un arresto anomalo durante l'accesso a una
ViewModel
per la prima volta da un callbackregisterForActivityResult()
di unFragment
. (Iea2b3).
Versione 1.4
Versione 1.4.1
26 gennaio 2022
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.1
, androidx.fragment:fragment-ktx:1.4.1
e androidx.fragment:fragment-testing:1.4.1
. La versione 1.4.1 contiene questi commit.
Correzioni di bug
FragmentContainerView
non genera più uno stato illegale eccezione quando gli ID vista generati da XML hanno valori negativi. (Ic185b, b/213086140)- Quando utilizzi una funzione lambda
ownerProducer
personalizzata con la funzione lazyby viewModels()
, ora utilizzerà ildefaultViewModelProviderFactory
di tale proprietario se un serverViewModelProvider.Factory
non viene fornito invece di utilizzare sempre il valore fabbrica. (I56170, b/214106513)
Versione 1.4.0
17 novembre 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0
, androidx.fragment:fragment-ktx:1.4.0
e androidx.fragment:fragment-testing:1.4.0
. 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 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 un listener personalizzato o arrestare l'app. LoFragmentStrictMode.Policy
che controlla quali controlli sono attivati e quali "sanzioni" vengono attivati può essere impostato su unFragmentManager
tramite il nuovo metodosetStrictModePolicy()
. Questo criterio si applica a questoFragmentManager
e in modo transitivo a tutti i gestori di frammenti figlio che non impostano un proprio criterio univoco. Vedi StrictMode per i frammenti. FragmentContainerView
ora fornisce un metodogetFragment()
che restituisce il frammento aggiunto più di recente al container. Questa operazione utilizza la stessa logica difindFragmentById()
con l'IDFragmentContainerView
, ma consente di concatenare la chiamata.val navController = binding.container.getFragment<NavHostFragment>().navController
FragmentScenario
ora implementaCloseable
, consentendoti di utilizzarlo con il metodouse
di Kotlin o try-with-resources.Aggiunta
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
per specificare se attivare l'animazione standard della transizione dell'attività recuperata dal tema nella transizione Frammenti.L'API sperimentale
FragmentManager.enableNewStateManager(boolean)
è stata rimossa e ora il nuovo stato Gestore è l'unica opzione disponibile.
Più stack posteriori
FragmentManager
gestisce un back stack composto da transazioni di frammenti che utilizzavano addToBackStack()
. In questo modo puoi aprire le transazioni e tornare allo stato precedente, utilizzando i meccanismi per il salvataggio dello stato con frammenti per consentire ai frammenti di ripristinare lo stato in modo appropriato.
Questa release amplia questi meccanismi fornendo tre nuove API FragmentManager
: saveBackStack(String name)
, restoreBackStack(String name)
e clearBackStack(String name)
. Queste API utilizzano lo stesso name
di addToBackStack()
per salvare lo stato di FragmentTransaction
e lo stato di ogni frammento aggiunto alle transazioni, consentendoti di ripristinare in un secondo momento le transazioni e i relativi frammenti con il relativo stato intatto. Questo ti permette di "scambiare" efficacemente tra più back stack salvando quello attuale e ripristinando uno stack salvato.
saveBackStack()
funziona in modo simile a popBackStack()
in quanto è asincrono e restituisce tutte le transazioni dei frammenti con quel nome specifico da invertire ("sbloccato") e distruggere e rimuovere tutti i frammenti aggiunti, ma presenta alcune differenze importanti:
saveBackStack()
è sempre inclusivo.- 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 utilizzandoaddToBackStack()
con quel nome esatto e diverso da null. - Lo stato di tutti i frammenti aggiunti da queste transazioni viene salvato. Ciò significa che viene archiviato lo stato di visualizzazione di ogni frammento, viene richiamato
onSaveInstanceState()
di ogni frammento e lo stato viene ripristinato e tutte le istanzeViewModel
associate ai frammenti vengono conservate (e non viene chiamato per i frammentionCleared()
).
Le transazioni di 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 salvato deve essere indipendente (ovvero, non deve fare riferimento esplicitamente a frammenti al di fuori dell'insieme di transazioni) per garantire che possa essere ripristinato in qualsiasi momento, indipendentemente dalle modifiche apportate al back stack nel tempo intermedio.
- Nessun frammento salvato può essere un frammento conservato o avere un frammento conservato nel proprio insieme transitivo di frammenti figlio per garantire che
FragmentManager
non restituisca alcun riferimento ai frammenti salvati dopo il salvataggio dello stack posteriore.
Similmente a saveBackStack()
, restoreBackStack()
e clearBackStack()
, che consentono di ripristinare uno stack esistente salvato in precedenza o di cancellare uno stack salvato in precedenza, entrambe le operazioni non fanno nulla se in precedenza non hai chiamato saveBackStack()
con lo stesso nome.
Per maggiori informazioni, vedi Back stack multipli: approfondimento.
Versione 1.4.0-rc01
3 novembre 2021
androidx.fragment:fragment:1.4.0-rc01
rilasciato senza modifiche dal frammento 1.4.0-beta01. La versione 1.4.0-rc01 contiene questi commit.
Versione 1.4.0-beta01
27 ottobre 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-beta01
, androidx.fragment:fragment-ktx:1.4.0-beta01
e androidx.fragment:fragment-testing:1.4.0-beta01
. La versione 1.4.0-beta01 contiene questi commit.
Correzioni di bug
- Ora i frammenti padre invieranno
onHiddenChanged()
verso il basso dell'intera gerarchia prima di lanciare il proprio callback. (Iedc20, b/77504618) - La tastiera si chiuderà automaticamente quando passi da da un frammento con una tastiera aperta a un frammento con una visualizzazione di riciclo. (I8b842, b/196852211)
DialogFragment
ora utilizzasetReorderingAllowed(true)
per tutte le transazioni creato quando chiamishow()
,showNow()
, odismiss()
. (Ie2c14).- L'avviso Lint estremamente lungo di
DetachAndAttachFragmentInSameFragmentTransaction
è stato ridotto aDetachAndAttachSameFragment
. (e9eca3).
Versione 1.4.0-alpha10
29 settembre 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha10
, androidx.fragment:fragment-ktx:1.4.0-alpha10
e androidx.fragment:fragment-testing:1.4.0-alpha10
. La versione 1.4.0-alpha10 contiene questi commit.
pelucchi
- È stato aggiunto l'avviso lint
DetachAndAttachFragmentInSameFragmentTransaction
per il rilevamento delle chiamate sia didetach()
che diattach()
sullo stessoFragment
nello stesso elementoFragmentTransaction
: poiché queste operazioni complementari si annullano a vicenda quando vengono eseguite nella stessa transazione, devono essere suddivise in transazioni separate affinché sia possibile eseguire determinate operazioni. (aosp/1832956, b/200867930) - È stato aggiunto l'errore lint
FragmentAddMenuProvider
per la correzione degli utilizzi del ciclo di vita del frammento al ciclo di vita della visualizzazione Frammento quando utilizzi l'APIaddMenuProvider
diMenuHost
. (aosp/1830457, b/200326272)
Aggiornamenti alla documentazione
- Il messaggio di ritiro per le API ora gestito dalle API Activity Result, ovvero
startActivityForResult
,startIntentSenderForResult
,onActivityResult
,requestPermissions
eonRequestPermissionsResult
, è stato ampliato con ulteriori dettagli. (cce80f) - Il messaggio relativo al ritiro di
onActivityCreated()
sia perFragment
sia perDialogFragment
è stato ampliato con ulteriori dettagli. (224db4)
Versione 1.4.0-alpha09
15 settembre 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha09
, androidx.fragment:fragment-ktx:1.4.0-alpha09
e androidx.fragment:fragment-testing:1.4.0-alpha09
. La versione 1.4.0-alpha09 contiene questi commit.
Nuove funzionalità
- Ora puoi chiamare
clearBackStack(name)
per cancella qualsiasi stato precedentemente salvato consaveBackStack(name)
. (I70cd7)
Modifiche alle API
- Il corso
FragmentContainerView
è stato riscritto in Kotlin assicurando che la funzionegetFragment
rispetti correttamente con supporto di valori null. (If694a, b/189629145) - FragmentStrictMode è ora scritto in Kotlin (I11767, b/199183506)
Correzioni di bug
- Risolto un problema per cui lo stato di un Frammento
aggiunta con
setReorderingAllowed(true)
e poi immediatamente rimosso prima di eseguire transazioni in sospeso non verrebbero ripulite correttamente. (I8ccb8)
Versione 1.4.0-alpha08
1° settembre 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha08
, androidx.fragment:fragment-ktx:1.4.0-alpha08
e androidx.fragment:fragment-testing:1.4.0-alpha08
. La versione 1.4.0-alpha08 contiene questi commit.
Correzioni di bug
- È stato migliorato il controllo Lint
UseRequireInsteadOfGet
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 rilasciate senza modifiche di rilievo. 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
- Risolto un problema relativo a più dorsali
stack quando si passa rapidamente da uno stack all'altro
che verrebbe visualizzato come
IllegalStateException
durante il ripristino di unFragmentTransaction
o come appare una seconda copia di un frammento. (I9039f) - È stato risolto un problema per cui
FragmentManager
conserverebbe una copia dello stato salvato in precedenza tramitesaveBackStack()
anche dopo che lo stato era ripristinato. (Ied212) - Il metodo
dismissAllowingStateLoss()
diDialogFragment
non ha più un arresto anomalo quando chiami dopo che lo stato è stato salvato quando si aggiunge il DialogFragment tramiteshow(FragmentTransaction, String)
. (I84422)
Versione 1.4.0-alpha05
21 luglio 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha05
, androidx.fragment:fragment-ktx:1.4.0-alpha05
e androidx.fragment:fragment-testing:1.4.0-alpha05
. La versione 1.4.0-alpha05 contiene questi commit.
Correzioni di bug
- Da Frammento
1.3.6
: la visualizzazione del frammento è ora correttamente impostata suGONE
quando si utilizzahide()
quando la vista principale hatransitionGroup=”true”
impostato. (aosp/1766655, b/193603427) - Da Frammento
1.3.6
:FragmentActivity
ora si sblocca sempre lo stato salvato come prima operazione nel ciclo di vita che esegue l'override. (I6db7a)
Aggiornamento delle dipendenze
- Da Frammento
1.3.6
: i frammenti ora dipendono dall'Attività1.2.4
(I3a66c)
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 alle API
FragmentManager
ora utilizzaSavedStateRegistry
per salvare il proprio stato. Anche i metodisaveAllState()
erestoreSavedState()
sono stati ritirati inFragmentController
. Se utilizziFragmentController
per ospitare frammenti all'esterno diFragmentActivity
, devi implementareFragmentHostCallbacks
SavedStateRegistryOwner
. (Iba68e, b/188734238)
Correzioni di bug
- È stato risolto un problema per cui la chiamata a
saveBackStack()
come parte del supporto di più schienali gli stack non andrebbero a buon fine se eseguiti contemporaneamente eseguire unFragmentTransaction
che ha usatoreplace()
. (I73137) - È stato corretto un
NullPointerException
che accadrebbe dopo il ripristino manuale di un'immagine uno stack esistente che conteneva più transazioni quando si utilizza l'APIrestoreBackStack()
per il supporto di più back stack. Questo problema è stato risolto un problema per cuisetReorderingAllowed(true)
non veniva verificata per tutte le transazioni. (I8c593) - Risolto un problema per cui
FragmentManager
veniva continuare erroneamente a ripristinare lo stato salvato in precedenza di frammenti anche dopo la rimozione daFragmentManager
, determinando lo stato salvato a crescere continuamente. (I1fb8e)
Versione 1.4.0-alpha03
16 giugno 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha03
, androidx.fragment:fragment-ktx:1.4.0-alpha03
e androidx.fragment:fragment-testing:1.4.0-alpha03
. 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 altro messaggio di errore dettagliato relativo al contenitore principale a cui sarebbe stato aggiunto il frammento. (Ic33a7).- Ora
WrongFragmentContainerViolation
ha di più messaggio di errore dettagliato che include il container a cui stavi aggiungendo il frammento. (Ib55f8) - Le classi dei casi d'uso per
TargetFragmentUsageViolation
ora hanno messaggi di errore più dettagliati che includono il frammento che causano la violazione e qualsiasi altra informazione contenuta. (Icc6ac) - I corsi che includono
RetainInstanceUsageViolation
ora hanno messaggi di errore più dettagliati che includono il frammento che causano la violazione. (I6bd55). - Ora
FragmentReuseViolation
ha di più messaggio di errore dettagliato che include i precedenti dell'ID del frammento. (I28ce2). - Ora
SetUserVisibleHintViolation
ha di più messaggio di errore dettagliato che include ciò che l'utente hint visibile era impostato su. (Ib2d5f)
Cambiamenti del comportamento
- È stata ripristinata la limitazione relativa alle chiamate a
fitsSystemWindows
suFragmentContainerView
. Questa operazione ha comportato l'arresto anomalo della tua app. (6b8ddd, b/190622202)
Correzioni di bug
- Da Frammento
1.3.5
: è stata corretta una regressione nelle transizioni di elementi condivisi introdotta in Frammento1.3.4
da aosp/1679887. Ora i frammenti gestiscono correttamente i gruppi di transizione (impostati direttamente tramitetransitionGroup="true"
o indirettamente tramitetransitionName
obackground
) e elementi condivisi non genereranno piùIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304) - L'app
FragmentManager
non avrà più un arresto anomalo quando tenti di nasconde un frammento rimosso. (I573dd, b/183634730) - Il controllo del lint
OnCreateDialogIncorrectCallback
non verrà eseguito un arresto anomalo più lungo durante la valutazione di una variabile di primo livello. (0a9efa, b/189967522)
Versione 1.4.0-alpha02
2 giugno 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha02
, androidx.fragment:fragment-ktx:1.4.0-alpha02
e androidx.fragment:fragment-testing:1.4.0-alpha02
. La versione 1.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- Ora
FragmentStrictMode
registrerà sempre le violazioni quando il logging è attivato tramiteFragmentManager
, indipendentemente dall'attuale criterio in modalità con restrizioni in uso. (I02df6, b/187872638) FragmentStrictMode
ora supporta l'esenzione di determinate classiFragment
dalla modalità con restrizioniViolation
, 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), ogniViolation
contiene quanto segue:WrongFragmentContainerViolation
ora contiene ilViewGroup
a cui stava tentando di aggiungereFragment
. (I83c75, b/187871150)TargetFragmentUsageViolation
è stato ampliato inSetTargetFragmentUsageViolation
,GetTargetFragmentUsageViolation
eGetTargetFragmentRequestCodeUsageViolation
, conSetTargetFragmentUsageViolation
contenente il frammento di destinazione e il codice di richiesta. (I741b4, b/187871150)SetUserVisibleHintViolation
ora contiene il valore booleano passato asetUserVisibleHint()
. (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 il parametro ID univoco dell'istanza precedente diFragment
che ha causato la violazione. (I0544d, b/187871150)RetainInstanceUsageViolation
è ora e ha due sottoclassi,SetRetainInstanceUsageViolation
eGetRetainInstanceUsageViolation
, che rappresentano i due per il tipo di violazione. (Ic81e5, b/187871150)
Cambiamenti del comportamento
FragmentContainerView
ora genera un'eccezione quando tenta di modificare l'attributofitsSystemWindow
in modo programmatico o tramite XML. Gli inserti devono essere gestiti dalla vista di ogni singolo frammento. (Ie6651, b/187304502)
Versione 1.4.0-alpha01
18 maggio 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.4.0-alpha01
, androidx.fragment:fragment-ktx:1.4.0-alpha01
e androidx.fragment:fragment-testing:1.4.0-alpha01
. La versione 1.4.0-alpha01 contiene questi commit.
Nuove funzionalità
FragmentContainerView
ora fornisce un metodogetFragment()
che restituisce il frammento aggiunto più di recente al container. Questa operazione utilizza la stessa logica difindFragmentById()
con l'IDFragmentContainerView
, ma consente di concatenare la chiamata. (Ife17a, b/162527857)val navController = binding.container.getFragment<NavHostFragment>().navController
Aggiunta
FragmentTransaction#TRANSIT_FRAGMENT_MATCH_ACTIVITY_{OPEN, CLOSE}
per specificare se attivare l'animazione standard della transizione dell'attività recuperata dal tema nella transizione Frammenti. (I46652)
Più stack posteriori
FragmentManager
gestisce un back stack composto da transazioni di frammenti che utilizzavano addToBackStack()
. In questo modo puoi aprire le transazioni e tornare allo stato precedente, utilizzando i meccanismi per il salvataggio dello stato con frammenti per consentire ai frammenti di ripristinare lo stato in modo appropriato.
Questa release amplia questi meccanismi fornendo due nuove API FragmentManager
: saveBackStack(String name)
e restoreBackStack(String name)
. Queste API utilizzano lo stesso name
di addToBackStack()
per salvare lo stato di FragmentTransaction
e lo stato di ogni frammento aggiunto alle transazioni, consentendoti di ripristinare in un secondo momento le transazioni e i relativi frammenti con il relativo stato intatto. Questo ti permette di "scambiare" efficacemente tra più back stack salvando quello attuale e ripristinando uno stack salvato.
saveBackStack()
funziona in modo simile a popBackStack()
in quanto è asincrono e restituisce tutte le transazioni dei frammenti con quel nome specifico da invertire ("sbloccato") e distruggere e rimuovere tutti i frammenti aggiunti, ma presenta alcune differenze importanti:
saveBackStack()
è sempre inclusivo.- 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 utilizzandoaddToBackStack()
con quel nome esatto e diverso da null. - Lo stato di tutti i frammenti aggiunti da queste transazioni viene salvato. Ciò significa che viene archiviato lo stato di visualizzazione di ogni frammento, viene richiamato
onSaveInstanceState()
di ogni frammento e lo stato viene ripristinato e tutte le istanzeViewModel
associate ai frammenti vengono conservate (e non viene chiamato per i frammentionCleared()
).
Le transazioni di 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 salvato deve essere indipendente (ovvero, non deve fare riferimento esplicitamente a frammenti al di fuori dell'insieme di transazioni) per garantire che possa essere ripristinato in qualsiasi momento, indipendentemente dalle modifiche apportate al back stack nel tempo intermedio.
- Nessun frammento salvato può essere un frammento conservato o avere un frammento conservato nel proprio insieme transitivo di frammenti figlio per garantire che
FragmentManager
non restituisca alcun riferimento ai frammenti salvati dopo il salvataggio dello stack posteriore.
Analogamente a saveBackStack()
, restoreBackStack()
non produce alcun effetto se in precedenza non hai 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 un listener personalizzato o arrestare l'app. Lo FragmentStrictMode.Policy
che controlla quali controlli sono attivati e quali "sanzioni" vengono attivati 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. (#123, #131, #150, b/143774122)
detectFragmentReuse()
rileva se un'istanzaFragment
rimossa in precedenza viene aggiunta di nuovo aFragmentManager
. Non devi mai interagire con o mantenere un riferimento a un'istanzaFragment
dopo che è stata eliminata e rimossa da unFragmentManager
. (#142, b/153738653)detectFragmentTagUsage()
rileva quando utilizzi il tag<fragment>
nel file XML di layout. Dovresti usare sempreFragmentContainerView
quando gonfia i frammenti all'interno del layout. (#141, b/153738235)detectWrongFragmentContainer()
rileva quando aggiungi un frammento a un container che non è di tipoFragmentContainerView
. Devi sempre utilizzareFragmentContainerView
come contenitore per i frammenti nel layout. (N. 146, b/181137036)detectRetainInstanceUsage()
rileva quando utilizzi le APIsetRetainInstance()
ogetRetainInstance()
deprecate. (#140, b/153737954)detectSetUserVisibleHint()
rileva quando utilizzi l'APIsetUserVisibleHint()
deprecata. (#136, b/153738974)detectTargetFragmentUsage()
rileva quando utilizzi le APIsetTargetFragment()
,getTargetFragment()
ogetTargetRequestCode()
deprecate. (N. 139, b/153737745)
Modifiche alle API
- L'API sperimentale
FragmentManager.enableNewStateManager(boolean)
è stata rimossa e ora il nuovo stato Gestore è l'unica opzione disponibile. (I90036, b/162776418) FragmentScenario
ora implementaCloseable
, consentendoti di utilizzarlo con il metodouse
di Kotlin o try-with-resources. (N. 121, b/143774122)
Nuovi controlli Lint
- Il controllo lint
UseGetLayoutInflater
ora avvisa quando utilizziLayoutInflater.from(Context)
all'interno di un elementoDialogFragment
. Devi sempre utilizzare il metodogetLayoutInflater()
del frammento di dialogo per ottenere il metodo appropriato perLayoutInflater
. (#156, b/170781346) - Il controllo lint
DialogFragmentCallbacksDetector
ora avvisa quando si chiamasetOnCancelListener
osetOnDismissListener
nel metodoonCreateDialog()
di unDialogFragment
. Questi listener sono di proprietà diDialogFragment
e devi eseguire l'override dionCancel()
eonDismiss()
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 utilizzava l'APIViewTreeViewModelStoreOwner.get()
conViewModelProvider
o il metodo Jetpack Compose diviewModel()
all'interno di un frammento. Ora questi casi d'uso utilizzano correttamente il valoreViewModelProvider.Factory
fornito dal frammento se esegue l'override digetDefaultViewModelProviderFactory()
(come accade per i frammenti annotati di@AndroidEntryPoint
quando si utilizza Hilt). Se non esegui l'override di questo metodo, come fabbrica predefinita viene creato unSavedStateViewModelFactory
che salva e ripristina il suo stato insieme alla visualizzazione del frammento. (I5cbfa, b/186097368) - Da Frammento 1.3.4: quando si utilizza
FragmentContainerView
sull'API 29, gli insiemi non invia più tempo a tempo indeterminato, risolvendo i problemi relativi alle istanzeBottomNavigationBar
eFloatingActionButton
. (I1bb78, b/186012452) - Dal Frammento 1.3.4: ora puoi recuperare il Parcelable dal risultato del frammento bundle dopo la morte del processo. (I65932, b/187443158)
- Da Frammento 1.3.4: quando si esegue la transizione di un elemento condiviso su un ViewGroup, se
In ViewGroup è impostato
transitionGroup
su false; ora funzionerà correttamente una transizione. (I99675)
Contributo esterno
- Grazie simonschiller per aver deciso di implementare
FragmentScenario
Closeable
. (N. 121, b/143774122) - Grazie simonschiller per aver aggiunto la versione completa dell'API
FragmentStrictMode
per questa release. (#123, #131, #131, #131, #150, b/1437774122. b/14377741222. #142. #142. b/1537386. b/15373738653. #141. #141. #141. b/153737382 - Grazie tatocaster per aver aggiunto il controllo pelucchi
UseGetLayoutInflater
. (#156, b/170781346) - Grazie tatocaster per aver aggiunto il controllo pelucchi
DialogFragmentCallbacksDetector
. (N. 171, b/181780047)
Versione 1.3
Versione 1.3.6
21 luglio 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.6
, androidx.fragment:fragment-ktx:1.3.6
e androidx.fragment:fragment-testing:1.3.6
. La versione 1.3.6 contiene questi commit.
Correzioni di bug
- Da Frammento
1.4.0-alpha03
: l'FragmentManager
non avrà più arresti anomali quando tenti di nasconde un frammento rimosso. (I573dd, b/183634730) - La vista del frammento è ora impostata correttamente su
GONE
quando si utilizzahide()
quando per la vista principale è impostatotransitionGroup=”true”
. (aosp/1766655, b/193603427) - Ora
FragmentActivity
si sblocca sempre lo stato salvato come prima operazione nel ciclo di vita che esegue l'override. (I6db7a)
Aggiornamento delle dipendenze
- Da Frammento
1.3.6
: i frammenti ora dipendono dall'Attività1.2.4
(I3a66c)
Versione 1.3.5
16 giugno 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.5
, androidx.fragment:fragment-ktx:1.3.5
e androidx.fragment:fragment-testing:1.3.5
. La versione 1.3.5 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di regressione nelle transizioni di elementi condivisi introdotto in Fragment
1.3.4
da aosp/1679887. Ora i frammenti gestiscono correttamente i gruppi di transizione (impostati direttamente tramitetransitionGroup="true"
o indirettamente tramitetransitionName
obackground
) e elementi condivisi non genereranno piùIndexOutOfBoundsException
. (I16484, b/188679569, b/188969304)
Versione 1.3.4
18 maggio 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.4
, androidx.fragment:fragment-ktx:1.3.4
e androidx.fragment:fragment-testing:1.3.4
. La versione 1.3.4 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione introdotta in Fragment
1.3.3
durante l'utilizzo dell'APIViewTreeViewModelStoreOwner.get()
conViewModelProvider
o del metodo Jetpack Compose diviewModel()
all'interno di un frammento quando si utilizzava Hilt. Ora questi casi d'uso utilizzano correttamente il valoreViewModelProvider.Factory
fornito dal frammento se esegue l'override digetDefaultViewModelProviderFactory()
(come accade con i frammenti annotati di@AndroidEntryPoint
). Se non esegui l'override di questo metodo, come fabbrica predefinita viene creato unSavedStateViewModelFactory
che salva e ripristina il suo stato insieme alla visualizzazione del frammento. (I5cbfa, b/186097368) - Quando utilizzi
FragmentContainerView
sull'API 29, gli insiemi non invia più tempo a tempo indeterminato, risolvendo i problemi relativi aBottomNavigationBar
eFloatingActionButton
istanze. (I1bb78, b/186012452) - Ora puoi recuperare la proprietà Parcelable dal risultato del frammento bundle dopo la morte del processo. (I65932, b/187443158)
- Quando esegui la transizione di un elemento condiviso su un ViewGroup, se
In ViewGroup è stato impostato
transitionGroup
su false; ora funzionerà correttamente una 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à
- Ora puoi usare
SavedStateViewModelFactory
quando utilizzato con il valoreSavedStateRegistryOwner
restituito utilizzandoViewTreeSavedStateRegistryOwner.get()
con Vista del frammento. (I21acf, b/181577191)
Correzioni di bug
- È stata corretta una regressione introdotta in Frammento
1.3.2
che causava la mancata esecuzione di animazionipopEnter
durante la creazione di un elementoFragmentTransaction
che includeva un'operazionesetPrimaryNavFragment
, come quelle utilizzate daNavHostFragment
. (I38c87, b/183877426) FragmentContainerView
ora garantisce che a ogniFragment
venga inviato un nuovo set diWindowInsets
, assicurando che ogni frammento possa ora consumare in modo indipendente i riquadri. (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 classeDialog
personalizzata, risolvendo i problemi relativi alla gerarchia delle visualizzazioni quando riutilizzi ID utilizzati internamente da finestre di dialogo comeBottomSheetDialog
. (Ie6279, b/180021387)- Ora
FragmentManager.dump()
applica correttamente il rientro al primo frammento dell'elenco dei frammenti attivi. (If5c33, b/183705451)
Correzioni di nuovi bug relativi a State Manager
- Il nuovo gestore dello stato dei frammenti ora gestisce correttamente l'uscita transizioni con operazioni di occultamento. (I9e4de, b/184830265)
Versione 1.3.2
24 marzo 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.2
, androidx.fragment:fragment-ktx:1.3.2
e androidx.fragment:fragment-testing:1.3.2
. La versione 1.3.2 contiene questi commit.
Correzioni di nuovi bug relativi a State Manager
- Quando si eseguono entrambe le operazioni
popBackStack()
ecommit()
insieme, l'ultima operazione imposterà la direzione per tutti anziché eseguire alcune animazioni pop e alcune entrano le animazioni. (I7072e, b/181142246) - Le visualizzazioni all'interno di una gerarchia di elementi condivisi non avranno più il nome della transizione viene 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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.1
, androidx.fragment:fragment-ktx:1.3.1
e androidx.fragment:fragment-testing:1.3.1
. La versione 1.3.1 contiene questi commit.
Nuove funzionalità
- Le finestre di dialogo all'interno di un
DialogFragment
ora possono accedere a ViewTree proprietari tramite DecorView, garantendo cheDialogFragment
possa essere utilizzato conComposeView
. (Ib9290, b/180691023)
Correzioni di bug
- Frammenti gonfiati in un'attività già
RESUMED
che utilizza I FragmentContainerView ora vengono visualizzati correttamente dopo una configurazione modifica. (Ie14c8, b/180538371) - Non è più presente un elemento
}
aggiuntivo alla fine del frammentotoString()
(I54705, b/177761088) - I metodi sostituiti in FragmentActivity ora ereditano correttamente metodo di base javaDoc (I736ce, b/139548782)
- Documenti per
setFragmentResult
esetFragmentResultListener
hanno aggiornato la documentazione sui parametri per indicare che non accettano più null (I990ba, b/178348386)
Correzioni di nuovi bug relativi a State Manager
- Correzione di una perdita di memoria nei frammenti causata da
mFocusedView
(Ib4e9e, b/179925887) - I frammenti ora chiamano correttamente
onCreateOptionsMenu
quando viene utilizzato mostra/nascondi transazioni (I8bce8, b/180255554) - I frammenti secondari con transizioni che iniziano prima della disposizione ora raggiungeranno correttamente
RESUMED
(Ic11e6, b/180825150) - Ora i frammenti gonfiati con il tag
<fragment>
verranno sempre raggiungiRESUMED
(I452ac, (I9fa49)
Aggiornamenti delle dipendenze
- Il frammento 1.3.1 dipende dall'Attività
1.2.1
. (I557b9)
Versione 1.3.0
10 febbraio 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0
, androidx.fragment:fragment-ktx:1.3.0
e androidx.fragment:fragment-testing:1.3.0
. La versione 1.3.0 contiene questi commit.
Modifiche principali dalla versione 1.2.0
- Nuovo State Manager: una significativa riscrittura degli elementi interni di
FragmentManager
ha risolto numerosi problemi relativi all'invio di eventi del ciclo di vita, animazioni e transizioni, nonché 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 flussistartActivityForResult()
+onActivityResult()
erequestPermissions()
+onRequestPermissionsResult()
senza eseguire l'override dei metodi nel Fragment, oltre a fornire hook per testare questi flussi. Consulta la sezione Come ottenere un risultato da un'attività aggiornata.- 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
. Devi eseguire l'upgrade a Fragment 1.3.0 per utilizzare le API Activity Result in unFragmentActivity
oAppCompatActivity
.
- 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
API Fragment Result: è stato aggiunto il supporto per il passaggio dei risultati tra due Fragment tramite nuove API su
FragmentManager
. Funziona per i frammenti gerarchici (principale/secondario), DialogFragments e frammenti in Navigation e garantisce che i risultati vengano inviati al tuo Fragment solo quando è almenoSTARTED
. Le API con frammento target sono state ritirate e sostituite da queste nuove API. Vedi Ottenere risultati utilizzando l'API Fragment Result.FragmentOnAttachListener
: il callbackonAttachFragment()
suFragmentActivity
eFragment
è stato ritirato. È stato aggiunto un nuovoFragmentOnAttachListener
per offrire un'alternativa più flessibile, consentendo la delega dionAttachFragment()
a listener separati e testabili, nonché supporto per l'aggiunta di un listener a FragmentManagers diversi dal tuo figlio diretto FragmentManager.FragmentScenario
Miglioramenti: la classeFragmentScenario
dell'elementofragment-testing
è stata riscritta in Kotlin e ha ricevuto una serie di miglioramenti:FragmentScenario
ora utilizzasetMaxLifecycle()
per implementaremoveToState()
, garantendo un comportamento coerente a tutti i livelli API e disaccoppiando lo stato del frammento dall'attività sottostante.FragmentScenario
ora supporta l'impostazione di unLifecycle.State
iniziale per consentire l'asserzione dello stato del frammento prima di passare a ogniLifecycle.State
per la prima volta.- Ora è disponibile un'alternativa all'API
FragmentScenario
dionFragment
sotto forma di metodo di estensione reified KotlinwithFragment
che ti consente di restituire un valore. In particolare, restituisce le eccezioni sollevate nel blocco specificato.
Assistenza
ViewTree
:Fragment
ora supporta le APIViewTreeLifecycleOwner.get(View)
,ViewTreeViewModelStoreOwner.get(View)
eViewTreeSavedStateRegistryOwner
aggiunte in Ciclo di vita2.3.0
e SavedState1.1.0
in modo da restituire il frammento comeViewModelStoreOwner
eSavedStateRegistryOwner
eLifecycleOwner
associati al ciclo di vita della vista del frammento quando viene utilizzatoView
all'interno di unaFragment
.Modifiche dell'animazione
TRANSIT_
: gli effetti predefiniti dei frammenti,TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
eTRANSIT_FRAGMENT_FADE
, ora utilizzanoAnimator
anzichéAnimation
. Le risorse utilizzate per creare questi animatori ora sono private.Ritiro di
setRetainInstance()
: il metodosetRetainInstance()
su Fragments è stato ritirato. 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 usare un frammento normale non conservato 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 conservato (ovvero il costruttore delViewModel
e il callbackonCleared()
che riceve).Ritiro dell'adattatore ViewPager 1: con il rilascio di ViewPager2
1.0.0
, le classiFragmentPagerAdapter
eFragmentStatePagerAdapter
per l'interazione conViewPager
sono state ritirate. Vedi Eseguire la migrazione da ViewPager a ViewPager2.
Versione 1.3.0-rc02
27 gennaio 2021
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-rc02
, androidx.fragment:fragment-ktx:1.3.0-rc02
e androidx.fragment:fragment-testing:1.3.0-rc02
. La versione 1.3.0-rc02 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui un
DialogFragment
principale veniva visualizzato sopra unDialogFragment
secondario dopo una modifica alla configurazione; ora i frammenti di finestra di dialogo figlio vengono sempre visualizzati sopra il frammento di una finestra di dialogo principale. (I30806, b/177439520) - È stato risolto il problema per cui veniva eseguita un'operazione
hide
con unAnimation
causa il flashing del frammento nascosto alla fine dell'animazione. (I57e22, b/175417675) - I frammenti con transizioni aggiunte prima della gerarchia di visualizzazione
collegati ora raggiungono correttamente
RESUMED
. (I1fc1d, b/177154873)
Correzioni di nuovi bug relativi a State Manager
- La visualizzazione
Lifecycle
del Frammento ora gestisce correttamente i casi in cui la visualizzazione del Frammento viene eliminata prima cheLifecycle
raggiungaCREATED
, evitando eccezioni che indicano "nessun evento proveniente da INIZIALIZZATO". (eda2bd, b/176138645) - I frammenti che utilizzano un elemento
Animator
ora appaiono nell'ordine corretto quando viene utilizzatoFragmentContainerView
. (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 dionCreateOptionsMenu()
e non viene più chiamato quando un frammento padre chiamasetMenuVisibility(false)
. (Id7de8, b/173203654)
Correzioni di nuovi bug relativi a State Manager
- È stata corretta la perdita e l'artefatto visivo durante l'aggiunta
da un frammento con
Animation
a unFragmentContainerView
e interromperlo con un'operazione pop. (I952d8) - Risolto un problema per cui la vista del frammento
rimangono nella gerarchia delle visualizzazioni se sono stati sostituiti durante
i relativi metodi
onCreate()
oonViewCreated()
. (I8a7d5). - Lo stato attivo è ora correttamente ripristinato sulle viste principali Fragment quando possono essere ripresi. (Ifc84b).
- Combinazione di operazioni di pop e sostituzione nello stesso frammento Ora la transazione mostra 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à binaria e sorgente tramite l'utilizzo delle interfacce funzionali di Kotlin 1.4 perFragmentAction
. (I19d31)
Cambiamenti del comportamento
- I FragmentContainerView che non eseguono l'inflate di un frammento utilizzando l'attributo
class
oandroid:name
ora possono essere utilizzati all'esterno di un elementoFragmentActivity
. (Id4397, b/172266337) - Se provi a impostare il ciclo di vita massimo di un frammento su
DESTROYED
, ora verrà generato unIllegalArgumentException
(Ie7651, b/170765622) - L'inizializzazione di uno scenario di frammenti con uno stato
DESTROYED
ora genererà unoIllegalArgumentException
(I73590, b/170765622)
Correzioni di nuovi bug relativi a State Manager
- È stato risolto un problema per cui la vista non raggiungeva lo stato finale se si interrompeva una transizione di frammento che utilizzava un'opzione
Animator
o una delle opzioniTRANSIT_FRAGMENT_
. (I92426, b/169874632) - È stato risolto un problema che impediva l'eliminazione corretta dei frammenti con un elemento
Animation
in uscita. (I83d65) - Frammenti in uscita con effetti invertiti ora annullare correttamente e ricominciare con l'effetto di inserimento corretto. (I62226, b/167092035)
- È stato risolto un problema per cui l'uscita
Animator
di unhide()
non veniva eseguita. (Id7ffe) - I frammenti ora appaiono correttamente quando vengono posticipati e poi iniziati 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
FragmentFactory
ora memorizza nella cache le classi dei frammenti separatamente per istanzeClassLoader
diverse. Grazie Simon Schiller! (#87, b/113886460)
Versione 1.3.0-beta01
1° ottobre 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-beta01
, androidx.fragment:fragment-ktx:1.3.0-beta01
e androidx.fragment:fragment-testing:1.3.0-beta01
. La versione 1.3.0-beta01 contiene questi commit.
Nuove funzionalità
setMaxLifecycle()
ora supporta l'impostazione dello statoLifecycle
suINITIALIZING
, purché il frammento non sia stato spostato inCREATED
. (b/159662173)
Modifiche alle API
- Esegui l'upgrade di Androidx per utilizzare Kotlin 1.4 (Id6471, b/165307851, b/165300826)
Cambiamenti del comportamento
- I file delle risorse dei frammenti sono stati resi privati correttamente. (aosp/1425237).
Correzioni di bug
- Ora i frammenti gonfiati con il tag
<fragment>
verranno gonfiati correttamente attendere che le rispettive viste vengano aggiunte a un container prima di passare a AVVIATO (I02f4c) - Ora i frammenti visibili e da
setMaxLifecycle()
aCREATED
eseguono correttamente gli effetti di uscita. (b/165822335) - La rimozione di un frammento scollegato che non è aggiunto allo stack posteriore non provoca 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 valoreFragmentManager
non nullo saranno sempre considerati attivi. (aosp/1422346) - Gli effetti predefiniti dei frammenti,
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
eTRANSIT_FRAGMENT_FADE
, ora utilizzanoAnimator
anzichéAnimation
. (b/166155034)
Correzioni di nuovi bug relativi a State Manager
- Ora i frammenti ripristinano correttamente lo stato attivo della visualizzazione da subito prima di iniziare l'animazione. (Icc256)
- Frammenti che al momento hanno una transizione solo di un elemento condiviso completare correttamente gli effetti speciali, il che significa che si spostano il relativo stato finale (Iaebc7, b/166658128)
- Le visualizzazioni frammentarie vengono ora sempre rimosse dal contenitore prima di essere distrutte. (ID5876)
- Il nuovo gestore dello stato ora rimuove sistematicamente lo stato una vista parziale prima di aggiungere quella da inserire. (I41a6e)
- Le modifiche esplicite alla visibilità di una visualizzazione per frammenti sono ora 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 aAnimations
, il che significa che un frammento con entrambi eseguirà soltantoAnimator
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 di stati, se premi Indietro durante l'inserimento di un effetto speciale invece di tornare al frammento precedente, il vecchio frammento non viene mai aggiunto di nuovo, generando una schermata vuota. (b/167259187, b/167092035, b/168442830)
Versione 1.3.0-alpha08
19 agosto 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha08
, androidx.fragment:fragment-ktx:1.3.0-alpha08
e androidx.fragment:fragment-testing:1.3.0-alpha08
. La versione 1.3.0-alpha08 contiene questi commit.
Nuovo gestore di stato
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 "Frammenti: ricostruzione del sito interno". (b/139536619, b/147749580)
- È possibile utilizzare un'API sperimentale in
FragmentManager.enableNewStateManager(boolean)
per controllare se FragmentManager utilizza il nuovo gestore dello stato. (I7b6ee)
I seguenti problemi vengono risolti solo quando si utilizza il nuovo gestore di stato:
- Il frammento precedente di un'operazione
replace
ora viene arrestato correttamente prima dell'avvio del nuovo frammento. (b/161654580) - I frammenti ora impediscono più animazioni in concorrenza sugli stessi frammenti, evitando i casi in cui
Animation
andrebbe a sostituire tutti gli effettiTransition
oAnimator
eTransition
su un singolo frammento. (b/149569323) enterTransition
eexitTranstion
di tutti i frammenti che entrano ed escono ora vengono eseguiti anziché solo l'ultimo frammento che entra e il primo frammento in uscita. (b/149344150)- I frammenti posticipati non rimangono più bloccati allo stato
CREATED
, ma vengono spostati inSTARTED
con altri frammenti. (b/129035555) - Risolto un problema per cui
FragmentManager
eseguiva operazioni non ordinate insieme a una transazione riordinata posticipata e una transazione non riordinata. (b/147297731) - Se si estrae più frammenti contemporaneamente, i frammenti intermedi non saranno più temporaneamente visibili durante il posticipo dei frammenti. (b/37140383)
FragmentManager
ora restituisce i frammenti corretti quando chiamifindFragmentById()
ofindFragmentByTag()
dal callbackonAttachFragment()
. (b/153082833)- I frammenti non richiamano più
onCreateView()
sui frammenti distrutti quando il frammento che li sostituisce viene posticipato. (b/143915710) - Il messaggio di errore quando tenti di combinare le istanze del framework
Transition
e AndroidXTransition
ora menziona il frammento con la transizione non valida. (b/155574969)
Cambiamenti del comportamento
- Ora puoi chiamare
launch()
su unActivityResultLauncher
nel metodo del ciclo di vitaonCreate()
di un frammento. (b/161464278) - La chiamata di
registerForActivityResult()
dopo il giornoonCreate()
ora genera un'eccezione che indica che questa operazione non è consentita, anziché l'impossibilità di fornire risultati in seguito a una modifica alla configurazione. (b/162255449) FragmentActivity
ora utilizza l'APIOnContextAvailableListener
introdotta in Attività1.2.0-alpha08
per ripristinare lo stato diFragmentManager
. Tutti i listener aggiunti alle sottoclassi diFragmentActivity
verranno eseguiti dopo questo listener. (I513da)
Correzioni di bug
- Ora i
ActivityOptions
che vengono superati quando si utilizzastartIntentSenderForResult()
vengono rispettati. (b/162247961)
Problema noto
- Quando utilizzi il nuovo gestore dello stato, l'impostazione diretta della visibilità della vista principale del frammento dopo il giorno
onViewCreated()
e prima del giornoonResume()
fa sì che la visibilità impostata venga ignorata daFragmentManager
, che controlla la visibilità della vista principale. Come soluzione alternativa, devi sempre utilizzare le operazionihide()
eshow()
per modificare la visibilità del frammento. (b/164481490)
Versione 1.3.0-alpha07
22 luglio 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha07
, androidx.fragment:fragment-ktx:1.3.0-alpha07
e androidx.fragment:fragment-testing:1.3.0-alpha07
. La versione 1.3.0-alpha07 contiene questi commit.
Nuove funzionalità
FragmentScenario
ora supporta l'impostazione di un'impostazione iniziale Stato del ciclo di vita diCREATED
,STARTED
oRESUMED
anziché spostare sempre il Frammento inRESUMED
stato. (b/159662750)- È stata aggiunta un'alternativa all'API
FragmentScenario
dionFragment
sotto forma di metodo di estensione Kotlin reifiedwithFragment
che consente di restituire un valore. In particolare, restituisce le eccezioni sollevate nel blocco specificato. (b/158697631)
Cambiamenti del comportamento
FragmentScenario
ora utilizzasetMaxLifecycle()
per implementaremoveToState()
, garantendo un comportamento coerente a tutti i livelli API e disaccoppiando lo stato del frammento dall'attività sottostante. (b/156527405)- L'elemento
SavedStateRegistryOwner
restituito daViewTreeSavedStateRegistryOwner
è ora collegato al ciclo di vita della vista frammento. In questo modo, lo stato viene salvato e ripristinato contemporaneamente alla visualizzazione del frammento. (b/158503763)
Correzioni di bug
- I frammenti ora attendono che la vista del frammento venga collegata prima di chiamare
ViewCompat.requestApplyInsets()
, per evitare i casi in cui la richiesta del frammento è stata eliminata. (b/158095749) - La chiamata a
clearFragmentResultListener
ora cancella correttamente osservatore del ciclo di vita. (b/159274993)
Versione 1.3.0-alpha06
10 giugno 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha06
, androidx.fragment:fragment-ktx:1.3.0-alpha06
e androidx.fragment:fragment-testing:1.3.0-alpha06
. La versione 1.3.0-alpha06 contiene questi commit.
Nuove funzionalità
- Il callback
onAttachFragment()
attivoFragmentActivity
eFragment
sono stati deprecati. È stato aggiunto un nuovoFragmentOnAttachListener
a offrono un'alternativa più flessibile, consentendo la delega dionAttachFragment()
per listener separati e testabili e supporto per l'aggiunta di un listener a FragmentManagers diverso da quello secondario diretto FragmentManager. (I06d3d)
Correzioni di bug
- Ora lo stato di visualizzazione dei frammenti padre viene ripristinato prima dei frammenti figlio, per risolvere un problema di ordinamento visivo dopo una modifica alla configurazione quando un
DialogFragment
mostrava un altroDialogFragment
come frammento figlio. (b/157195715) - È stato risolto un problema per cui il controllo Lint
UseRequireInsteadOfGet
non gestiva correttamente gli utilizzi concatenati degli operatori?.
e!!
. (b/157677616)
Versione 1.3.0-alpha05
20 maggio 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha05
, androidx.fragment:fragment-ktx:1.3.0-alpha05
e androidx.fragment:fragment-testing:1.3.0-alpha05
. La versione 1.3.0-alpha05 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto di
ViewTreeViewModelStoreOwner
da Ciclo di vita2.3.0-alpha03
eViewTreeSavedStateRegistryOwner
da SavedState1.1.0-alpha01
quando si utilizza unView
in unFragment
. (aosp/1297993, aosp/1300264)
Modifiche alle API
- Le API
setFragmentResult()
esetFragmentResultListener()
ora assumono rispettivamente i valoriBundle
eFragmentResultListener
non null. Per cancellare in modo esplicito un risultato o un listener impostato in precedenza, utilizza i nuovi metodiclearFragmentResult()
eclearFragmentResultListener()
. (b/155416778) - Le estensioni Kotlin
setFragmentResultListener()
che supportano una lambda ora sono contrassegnate comeinline
. (b/155323404)
Cambiamenti del comportamento
- Gli attributi
startActivityForResult()
,startIntentSenderForResult()
erequestPermissions
deprecati in precedenza suFragment
ora utilizzano internamenteActivityResultRegistry
, rimuovendo così la limitazione che prevede l'utilizzo solo dei bit più bassi (inferiori a0xFFFF
) per i codici di richiesta quando si utilizzano queste API. (b/155518741)
Aggiornamenti alla documentazione
- È stata espansa la documentazione sui costruttori
Fragment(@LayoutRes int)
eDialogFragment(@LayoutRes int)
per chiarire che dovrebbero essere chiamati dal costruttore senza argomento delle sottoclassi quando si utilizza il valore predefinitoFragmentFactory
. (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
. Funziona per i frammenti gerarchici (principale/secondario), DialogFragments e frammenti in Navigation e garantisce che i risultati vengano inviati al tuo Fragment solo quando è almenoSTARTED
. (b/149787344)
Modifiche alle API
- Le API del frammento di destinazione sono state deprecate. Per passare i dati tra i frammenti è invece necessario utilizzare le nuove API Fragment Result. (b/149787344)
- Le API
startActivityForResult()
/onActivityResult()
erequestPermissions()
/onRequestPermissionsResult()
su Fragment sono state ritirate. Usa le API Activity Result. (aosp/1290887) - Interruzione della modifica da Attività
1.2.0-alpha04
: il metodoprepareCall()
è stato rinominato inregisterForActivityResult()
. (aosp/1278717)
Correzioni di bug
- Il valore
getViewLifecycleOwner()
del frammento viene ora arrestato prima della chiamata dionSaveInstanceState()
, rispecchiando il comportamento del ciclo di vita del frammento. (b/154645875) - La chiamata di
setMenuVisibility(false)
su un frammento ora modifica correttamente la visibilità dei menu forniti dai suoi frammenti figlio. (b/153593580) - È stato corretto un
illegalStateException
durante l'aggiunta di un frammento alla gerarchia di visualizzazione diDialogFragment
conFragmentContainerView
. (b/154366601) - Il metodo
getDefaultViewModelProviderFactory()
sui frammenti non si arresta più in modo anomalo quando i frammenti vengono ospitati all'esterno di un'attività. (b/153762914)
Versione 1.3.0-alpha03
1° aprile 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha03
, androidx.fragment:fragment-ktx:1.3.0-alpha03
e androidx.fragment:fragment-testing:1.3.0-alpha03
. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche alle API
- I metodi
prepareCall
suFragment
ora sonofinal
. (b/152439361)
Correzioni di bug
- È stata corretta una regressione introdotta in Frammento
1.3.0-alpha02
quando si utilizzavaBottomSheetDialogFragment
. (b/151652127, aosp/1263328, aosp/1265163) - È stato corretto un arresto anomalo durante l'utilizzo di
prepareCall
da un frammento dopo una modifica alla configurazione. (b/152137004) - È stato risolto un problema per cui le transizioni di uscita e di elemento condiviso vengono ignorate quando si utilizza
setTargetFragment()
. (b/152023196) - Da Frammento
1.2.4
: sono state aggiornate le regole Fragment ProGuard per consentire l'offuscamento dei frammenti conservati. (b/151605338) - Da Frammento
1.2.4
: la regola LintFragmentLiveDataObserve
suDialogFragment
classi è disabilitata poiché il loro ciclo di vita e il ciclo di vita della visualizzazione sono sempre sincronizzati, il che rende sicuro utilizzarethis
oviewLifecycleOwner
quando chiamiobserve
. (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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha02
, androidx.fragment:fragment-ktx:1.3.0-alpha02
e androidx.fragment:fragment-testing:1.3.0-alpha02
. La versione 1.3.0-alpha02 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto per l'API
ActivityResultRegistry
introdotto nell'Attività1.2.0-alpha02
per gestire i flussistartActivityForResult()
+onActivityResult()
erequestPermissions()
+onRequestPermissionsResult()
senza eseguire l'override dei metodi nel Fragment, oltre a fornire hook per testare questi flussi. Consulta la sezione Come ottenere un risultato da un'attività aggiornata. (b/125158199)
Modifiche alle API
DialogFragment
ora fornisce un costruttore che prende un@LayoutRes
che indica il layout cheonCreateView()
dovrebbe aumentare per impostazione predefinita. (b/150327080)- Il metodo
onActivityCreated()
è ora deprecato. Il codice che tocca la visualizzazione del frammento deve essere eseguito inonViewCreated()
(chiamato immediatamente prima dionActivityCreated()
) mentre gli altri codici di inizializzazione devono essere inonCreate()
. Per ricevere una richiamata in particolare quando l'attivitàonCreate()
è completa, è necessario registrare unLifeCycleObserver
sulLifecycle
dell'attività inonAttach()
e rimuovere una volta ricevuto il callbackonCreate()
. (b/144309266)
Correzioni di bug
- Da Frammento
1.2.3
: è stato corretto un bug inDialogFragment
che causava un errore diStackOverflowError
durante la chiamata agetLayoutInflater()
dall'interno dionCreateDialog()
. (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 rimosse. (b/149665169) - Da Frammento
1.2.3
: sono stati corretti i falsi positivi nel controllo Lint diUseRequireInsteadOfGet
quando veniva utilizzato un nome di variabile locale con shadowing sul nome della proprietà Kotlin. (b/149891163) - Da Frammento
1.2.3
:FragmentContainerView
non genera più unUnsupportedOperationException
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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.3.0-alpha01
, androidx.fragment:fragment-ktx:1.3.0-alpha01
e androidx.fragment:fragment-testing:1.3.0-alpha01
. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto dell'API
ViewTreeLifecycleOwner.get(View)
aggiunta nel Ciclo di vita2.3.0-alpha01
in modo che venga restituito il valoreviewLifecycleOwner
del Frammento comeLifecycleOwner
per tutte le viste restituite daonCreateView()
. (aosp/1182955).
Modifiche alle API
- Il metodo
setRetainInstance()
su Fragments è stato ritirato. 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 usare un frammento normale non conservato 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 conservato (ovvero il costruttore delViewModel
e il callbackonCleared()
che riceve). (b/143911815) - Con il rilascio di ViewPager2
1.0.0
, le classiFragmentPagerAdapter
eFragmentStatePagerAdapter
per l'interazione conViewPager
sono state deprecate. Vedi Eseguire la migrazione da ViewPager a ViewPager2. (b/145132715)
Correzioni di bug
- Le regole di ProGuard a frammenti ora mantengono correttamente solo le classi dei costruttori predefiniti
Fragment
utilizzate anziché per tutte le istanzeFragment
, correggendo una regressione introdotta in Frammento1.2.1
. (b/149665169 - Le regole Lint
require___()
aggiunte nel Frammento1.2.2
non sono più falsi positivi sulle variabili locali che condividono lo stesso nome dei nomi delle proprietà Kotlin in ombra (ad es.view
). (b/149891163) FragmentContainerView
non genera più unUnsupportedOperationException
quando utilizzi 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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.5
, androidx.fragment:fragment-ktx:1.2.5
e androidx.fragment:fragment-testing:1.2.5
. La versione 1.2.5 contiene questi commit.
Correzioni di bug
- Il valore
getViewLifecycleOwner()
del frammento viene ora arrestato prima della chiamata dionSaveInstanceState()
, rispecchiando il comportamento del ciclo di vita del frammento. In precedenza era presente nel Frammento1.3.0-alpha04
. (b/154645875) - La chiamata di
setMenuVisibility(false)
su un frammento ora modifica correttamente la visibilità dei menu forniti dai suoi frammenti figlio. In precedenza era presente nel Frammento1.3.0-alpha04
. (b/153593580)
Versione 1.2.4
Versione 1.2.4
1° aprile 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.4
, androidx.fragment:fragment-ktx:1.2.4
e androidx.fragment:fragment-testing:1.2.4
. 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)
- La regola Lint
FragmentLiveDataObserve
è stata disabilitata sulle classiDialogFragment
poiché il loro ciclo di vita e il ciclo di vita della visualizzazione sono sempre sincronizzati, il che rende sicuro utilizzarethis
oviewLifecycleOwner
quando chiamiobserve
. (b/151765086)
Versione 1.2.3
Versione 1.2.3
18 marzo 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.3
, androidx.fragment:fragment-ktx:1.2.3
e androidx.fragment:fragment-testing:1.2.3
. La versione 1.2.3 contiene questi commit.
Correzioni di bug
- È stato corretto un bug in
DialogFragment
che causava un errore diStackOverflowError
durante la chiamata agetLayoutInflater()
dall'interno dionCreateDialog()
. (b/117894767, aosp/1258665) - È stato ridotto l'ambito delle regole ProGuard incluse in Fragment per garantire che le classi Fragment inutilizzate possano essere rimosse. (b/149665169)
- Sono stati corretti i falsi positivi nel controllo Lint
UseRequireInsteadOfGet
quando veniva utilizzato il nome di una variabile locale con shadowing sul nome della proprietà Kotlin. (b/149891163) FragmentContainerView
non genera più unUnsupportedOperationException
per l'utilizzo del costruttore errato nell'anteprima del layout. (b/149707833)
Versione 1.2.2
Versione 1.2.2
19 febbraio 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.2
, androidx.fragment:fragment-ktx:1.2.2
e androidx.fragment:fragment-testing:1.2.2
. La versione 1.2.2 contiene questi commit.
Nuovi controlli Lint
- Lint suggerisce di utilizzare
viewLifecycleOwner
comeLifecycleOwner
per le chiamate aOnBackPressedDispatcher
inonCreateView()
,onViewCreated()
eonActivityCreated()
. (b/142117657) - È stato aggiunto un nuovo controllo lint che conferma che stai usando il
debugImplementation
corretto quando usi l'artefattofragment-testing
. (b/141500106) - Per i messaggi di errore più descrittivi, i frammenti suggeriscono ora di utilizzare i metodi
require___()
associati, anzichécheckNotNull(get___())
,requireNonNull(get___())
oget___()!!
per tutte le API Fragment che includono sia un valoreget
che un equivalenterequire
. (aosp/1202883)
Correzioni di bug
- Sono stati corretti i file Fragment ProGuard per evitare avvisi R8 (b/148963981)
- È stato migliorato il controllo Lint esistente che suggerisce l'utilizzo di
viewLifecycleOwner
quando si utilizzaobserve
per gestire anche la versione del metodo di estensionelivedata-ktx
diobserve
. (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
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.1
, androidx.fragment:fragment-ktx:1.2.1
e androidx.fragment:fragment-testing:1.2.1
. La versione 1.2.1 contiene questi commit.
Correzioni di bug
- Ora ProGuard conserva il costruttore predefinito dei frammenti aggiunti tramite i metodi
add
ereplace
che utilizzano un'istanzaClass
(o le versioni reificate di Kotlin). (b/148181315) FragmentStatePagerAdapter
eFragmentPagerAdapter
non rilevano più le eccezioni generate daFragmentManager
quando vengono eseguitifinishUpdate()
. (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 aonInflate()
prima del giornoonCreate()
quando nel layout. (aosp/1215856). - La chiamata di
toString()
su un'istanzaFragmentManager
non genera più unNullPointerException
quando l'attività è già stata eliminata. (b/148189412)
Modifiche alle dipendenze
- I frammenti
1.2.1
ora dipendono da Lifecycle ViewModel SavedState2.2.0
.
Versione 1.2.0
Versione 1.2.0
22 gennaio 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0
, androidx.fragment:fragment-ktx:1.2.0
e androidx.fragment:fragment-testing:1.2.0
. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
- FragmentContainerView:
FragmentContainerView
è il contenitore vivamente consigliato per l'aggiunta dinamica di frammenti, che sostituisce l'utilizzo diFrameLayout
o di altri layout. Supporta anche gli stessi valoriclass
,android:name
eandroid:tag
facoltativo del tag<fragment>
, ma utilizza un normaleFragmentTransaction
per aggiungere questo frammento iniziale, anziché il percorso del codice personalizzato utilizzato da<fragment>
. - Tempistiche
onDestroyView()
: i frammenti ora attendono il completamento delle animazioni di uscita, delle transizioni del framework di uscita e delle transizioni AndroidX (quando si utilizza Transizione1.3.0
) prima di chiamareonDestroyView()
. add()
ereplace()
basati su corsi: sono stati aggiunti nuovi sovraccarichi diadd()
ereplace()
suFragmentTransaction
che accettano unClass<? extends Fragment>
eBundle
di argomenti facoltativi. Questi metodi utilizzanoFragmentFactory
per creare un'istanza del frammento da aggiungere. Anche le estensioni Kotlin che utilizzano tipi modificati (ad es.fragmentTransaction.replace<YourFragment>(R.id.container)
) sono state aggiunte afragment-ktx
.- Integrazione del ciclo di vita ViewModel SavedState:
SavedStateViewModelFactory
è ora il valore di fabbrica predefinito utilizzato quando si utilizzanoby viewModels()
,by activityViewModels()
, il costruttoreViewModelProvider
oViewModelProviders.of()
con un frammento. - Nuovi controlli Lint: è stato aggiunto un nuovo controllo Lint che assicura di utilizzare
getViewLifecycleOwner()
durante l'osservazione diLiveData
daonCreateView()
,onViewCreated()
oonActivityCreated()
. - Ritiro di
getFragmentManager()
: i metodigetFragmentManager()
erequireFragmentManager()
su Fragment sono stati deprecati e sostituiti con un singolo metodogetParentFragmentManager()
, che restituisce il valoreFragmentManager
non nullo a cui è stato aggiunto il frammento (puoi utilizzareisAdded()
per determinare se è sicuro chiamare). - Ritiro di
FragmentManager.enableDebugLogging()
: il metodoFragmentManager.enableDebugLogging
statico è stato ritirato. FragmentManager ora rispettaLog.isLoggable()
per il tagFragmentManager
, consentendoti di attivare il logging diDEBUG
oVERBOSE
senza dover ricompilare l'app.
Problemi noti
- I frammenti a cui viene fatto riferimento solo tramite l'attributo
class
oandroid:name
in unFragmentContainerView
non vengono conservati automaticamente da ProGuard, pertanto devi aggiungere manualmente una regola di conservazione per ogni classe di frammento. (b/142601969) - Quando aggiungi un
NavHostFragment
utilizzandoclass
oandroid:name
in XML conFragmentContainerView
, non puoi usarefindNavController()
inonCreate()
della tua Attività. (b/142847973)
Versione 1.2.0-rc05
8 gennaio 2020
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-rc05
, androidx.fragment:fragment-ktx:1.2.0-rc05
e androidx.fragment:fragment-testing:1.2.0-rc05
. La versione 1.2.0-rc05 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione nel Frammento
1.2.0-rc04
durante l'utilizzo del tag<fragment>
che causava la chiamata errata dionViewCreated()
durante l'eliminazione dell'attività. (b/146290333) - Ora la non configurazione dei frammenti aggiunti con il tag
<fragment>
viene cancellata correttamente anche quando si trovano solo occasionalmente nel layout (ossia solo nel layout orizzontale). Di conseguenza, questi frammenti vengono ora spostati correttamente inCREATED
anche se non si trovano nel layout, anziché essere creati in un'istanza ma non vengono mai spostati attraverso i metodi del ciclo di vita. (b/145769287)
Versione 1.2.0-rc04
18 dicembre 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-rc04
, androidx.fragment:fragment-ktx:1.2.0-rc04
e androidx.fragment:fragment-testing:1.2.0-rc04
. La versione 1.2.0-rc04 contiene questi commit.
Correzioni di bug
- Sono state modificate le animazioni di
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
eTRANSIT_FRAGMENT_FADE
per evitare problemi visivi. (b/145468417)
Versione 1.2.0-rc03
4 dicembre 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-rc03
, androidx.fragment:fragment-ktx:1.2.0-rc03
e androidx.fragment:fragment-testing:1.2.0-rc03
. La versione 1.2.0-rc03 contiene questi commit.
Correzioni di bug
- È stato corretto un cambiamento del comportamento involontario per cui i Frammenti rimossi vengono ancora restituiti da
findFragmentById()
/findFragmentByTag()
durante l'esecuzione delle animazioni/transizioni di uscita. (b/143982969, aosp/1167585) - I frammenti secondari vengono ora arrestati correttamente prima degli elementi padre quando l'attività contenitore chiama
onSaveInstanceState()
. (b/144380645) - È stato risolto un problema per cui le visualizzazioni venivano contrassegnate erroneamente come
INVISIBLE
dopo la visualizzazione di 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 alla documentazione
- È stata chiarita la documentazione relativa al ritiro relativa a
setUserVisibleHint()
. (b/143897055) - È stata migliorata la documentazione su
setFragmentFactory()
egetFragmentFactory()
per indicare meglio che l'impostazione diFragmentFactory
interesserà anche i FragmentManagers secondari. (aosp/1170095)
Modifiche alle dipendenze
- I frammenti ora dipendono da ciclo di vita
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
e attività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 LintFix per l'utilizzo di
getViewLifecycleOwner()
durante l'osservazione diLiveData
daonCreateView()
,onViewCreated()
oonActivityCreated()
(introdotto in Fragment1.2.0-rc01
) ora utilizza la sintassi di accesso alla proprietà KotlinviewLifecycleOwner
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'attributoclass
oltre aandroid:name
, il mirroring della funzionalità del tag<fragment>
. (b/142722242)- È stato aggiunto un nuovo controllo Lint per verificare che venga utilizzato
getViewLifecycleOwner()
durante l'osservazione diLiveData
daonCreateView()
,onViewCreated()
oonActivityCreated()
. (b/137122478)
Correzioni di bug
- I callback
onDismiss
eonCancel
suDialogFragment
ora garantiscono che il valoreDialogInterface
trasmesso loro non sia null e chegetDialog()
restituisca un valore diverso da null quando vengono eseguiti. (b/141974033) FragmentContainerView
ora aggiunge il Frammento definito daclass
oandroid:name
come parte dell'inflazione, assicurando chefindFragmentById()
efindFragmentByTag()
funzionino immediatamente dopo. (b/142520327)- È stato corretto un
IllegalStateException
inFragmentContainerView
a causa del salvataggio dello stato. (b/142580713) - È stato corretto un
UnsupportedOperationException
inFragmentContainerView
quando la classeFragmentContainerView
è offuscata. (b/142657034)
Problemi noti
- I frammenti a cui viene fatto riferimento solo tramite l'attributo
class
oandroid:name
in unFragmentContainerView
non vengono conservati automaticamente da ProGuard, pertanto devi aggiungere manualmente una regola di conservazione per ogni classe di frammento. Abbiamo disattivato la regola Lint che suggerisce di passare aFragmentContainerView
finché il problema non verrà risolto tramiteaapt2
. (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
- È stato risolto un problema per cui l'elemento
onInflate()
del frammento non riceveva attributi corretti daFragmentContainerView
, causando l'interruzione di casi comeNavHostFragment
. (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 XMLandroid:name
eandroid:tag
facoltativi. A differenza del tag<fragment>
,FragmentContainerView
utilizza un normaleFragmentTransaction
sottostante per aggiungere il frammento iniziale, consentendo ulteriori operazioniFragmentTransaction
suFragmentContainerView
e abilita l'utilizzo dell'associazione di viste per il layout. (b/139830628, b/141177981)- I frammenti ora contengono un avviso Lint che offre una correzione rapida per sostituire
<fragment>
conFragmentContainerView
. (b/139830056)
Correzioni di bug
- È stato corretto un
ClassCastException
quando si utilizzavaandroidx.transition
. (b/140680619) - Quando utilizzi Transizione
1.3.0-beta01
, i frammenti ora attendono il completamento delle transizioniandroidx.transition
(oltre alle transizioni e alle animazioni del framework, che sono state corrette rispettivamente in Frammento1.2.0-alpha03
e Frammento1.2.0-alpha02
) prima di inviareonDestroyView()
. (aosp/1119841) - Quando utilizzi Transizione
1.3.0-beta01
, i frammenti ora annullano correttamente le transizioniandroidx.transition
prima di iniziare 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 utilizzaFragmentContainerView
. (b/140361893) - L'elemento
fragment-testing
ora dipende da AndroidX Test1.2.0
, che risolve un'incompatibilità con l'ultima versione di Espresso 3.2.0. (b/139100149) - È stato rimosso l'utilizzo di
Log.w
in FragmentManager. (aosp/1126468)
Problemi noti
- L'elemento
onInflate()
del frammento non riceve gli attributi corretti daFragmentContainerView
, causando l'interruzione di casi comeNavHostFragment
. (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 alle API
- I metodi
getFragmentManager()
erequireFragmentManager()
suFragment
sono stati deprecati e sostituiti con un singolo metodogetParentFragmentManager()
, che restituisce il valoreFragmentManager
non null a cui è stato aggiunto il frammento (puoi utilizzareisAdded()
per determinare se è sicuro chiamare). (b/140574496) - Il metodo
FragmentManager.enableDebugLogging
statico è stato ritirato. FragmentManager ora rispettaLog.isLoggable()
per il tagFragmentManager
, consentendoti di attivare il logging diDEBUG
oVERBOSE
senza dover ricompilare l'app. (aosp/1116591)
Correzioni di bug
- I frammenti vengono ora eliminati correttamente mentre sono in esecuzione le animazioni di uscita su altri frammenti. (b/140574199)
- È stato risolto un problema per cui i Frammenti chiamavano
Activity.findViewById()
e prima no. (aosp/1116431)
Versione 1.2.0-alpha03
5 settembre 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-alpha03
, androidx.fragment:fragment-ktx:1.2.0-alpha03
e androidx.fragment:fragment-testing:1.2.0-alpha03
. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
FragmentContainerView
ora èfinal
. (b/140133091)
Correzioni di bug
- Ora
FragmentContainerView
inverte correttamente l'ordine di disegno quando rimuovi frammenti dalla pila posteriore. (b/139104187) - È stato risolto il problema per cui veniva eseguita l'animazione sbagliata quando veniva aperto un frammento e si aggiungeva contemporaneamente un nuovo frammento. (b/111659726)
- Ora i frammenti attendono il completamento delle transizioni (oltre alle animazioni, che era stato corretto in Frammento
1.2.0-alpha02
) prima di inviareonDestroyView()
. (b/138741697)
Versione 1.2.0-alpha02
7 agosto 2019
Vengono rilasciati i rilasci di androidx.fragment:fragment:1.2.0-alpha02
, androidx.fragment:fragment-ktx:1.2.0-alpha02
e androidx.fragment:fragment-testing:11.2.0-alpha02
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
SavedStateViewModelFactory
è ora il valore di fabbrica predefinito utilizzato quando si utilizzaby viewModels()
,by activityViewModels()
, il costruttoreViewModelProvider
oppureViewModelProviders.of()
con unFragment
. (b/135716331)- Le animazioni predefinite quando utilizzi
TRANSIT_FRAGMENT_OPEN
,TRANSIT_FRAGMENT_CLOSE
,TRANSIT_FRAGMENT_FADE
consetTransition
suFragmentTransaction
sono state aggiornate in modo che corrispondano alle animazioni utilizzate dalle attività sui dispositivi Android 10. (aosp/1012812, aosp/1014730)
Modifiche alle API
- Introduce
FragmentContainerView
come contenitore vivamente consigliato per i frammenti aggiunti in modo dinamico, sostituendo l'utilizzo diFrameLayout
e così via, in quanto corregge i problemi di ordinamento in Z delle animazioni e l'invio di riquadri delle finestre ai frammenti. (b/37036000, aosp/985243, b/136494650) - È stato aggiunto un metodo
FragmentManager.findFragment(View)
statico per recuperare il frammento contenitore da una visualizzazione gonfiata da un frammento. Un'estensione Kotlin è disponibile anche infragment-ktx
. (aosp/1090757). - Sono stati aggiunti nuovi sovraccarichi di
add()
ereplace()
suFragmentTransaction
che accettanoClass<? extends Fragment>
eBundle
di argomenti facoltativi. Questi metodi utilizzanoFragmentFactory
per creare un'istanza del frammento da aggiungere. Afragment-ktx
sono state aggiunte anche le estensioni Kotlin che utilizzano tipi modificati (ad es.fragmentTransaction.replace<YourFragment>(R.id.container)
). (b/126124987) @MainThread
annotazioni sono state aggiunte aFragment
callback del ciclo di vita. (b/127272564)- Le API relative al titolo dei breadcrumb su
FragmentTransaction
eFragmentManager.BackStackEntry
sono state deprecate. (b/138252944) - Il metodo
setTransitionStyle
suFragmentTransaction
è stato ritirato. (aosp/1011537) - Molti metodi in
FragmentManager
non sono piùabstract
. L'entitàFragmentManager
rimaneabstract
e non deve essere creata o estesa direttamente. dovresti continuare a ricevere solo un'istanza esistente dagetSupportFragmentManager()
,getChildFragmentManager()
e così via.
Correzioni di bug
- Da Frammento
1.1.0-rc04
: ora i frammenti annullano correttamente le transizioni posticipate sui frammenti. (b/138251858) - Da Frammento
1.1.0-rc03
: è stato risolto un problema per cui chiamarepostponeEnterTransition()
con un timeout più di una volta non annullava i timeout precedenti. (b/137797118) - Da Frammento
1.1.0-rc02
: è stato corretto un arresto anomalo inFragmentPagerAdapter
eFragmentStatePagerAdapter
durante la rimozione dell'elemento corrente. (b/137209870) - I frammenti ora attendono il completamento 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
durante l'utilizzo di transizioni di elementi condivise e la combinazione di un'operazione Pop e Add. (b/120507394) - È stata aggiunta una soluzione alternativa a
IllegalStateException
quando utilizziFragmentPagerAdapter
eFragmentStatePagerAdapter
nei test robotici. (b/137201343)
Versione 1.2.0-alpha01
2 luglio 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.2.0-alpha01
, androidx.fragment:fragment-ktx:1.2.0-alpha01
e androidx.fragment:fragment-testing:1.2.0-alpha01
. 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 chiamareonViewCreated()
, assicurando che la visualizzazione abbia sempre i riquadri corretti. (b/135945162)
Correzioni di bug
- È stato corretto un
NullPointerException
durante lo sblocco di unFragmentTransaction
che utilizzavasetPrimaryNavigationFragment()
prima direplace()
. (b/134673465)
Versione 1.1.0
Versione 1.1.0
5 settembre 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0
, androidx.fragment:fragment-ktx:1.1.0
e androidx.fragment:fragment-testing:1.1.0
. I commit inclusi in questa versione sono disponibili qui.
Modifiche importanti dalla versione 1.0.0
- fragment-testing: l'artefatto
fragment-testing
fornisce una classeFragmentScenario
per testare un frammento in modo isolato. Per maggiori dettagli, vedi Testare la documentazione sui frammenti dell'app. - Fragmentfabbrica: ora puoi impostare un valore
FragmentFactory
suFragmentManager
per gestire la creazione di istanze di frammenti, rimuovendo così il requisito indispensabile di avere un costruttore senza argomento. - 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 eby 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 unFragmentTransaction
. Questo sostituisce l'elementosetUserVisibleHint()
, ora deprecato.FragmentPagerAdapter
eFragmentStatePagerAdapter
hanno un nuovo costruttore che ti consente di passare al nuovo comportamento. - Costruttore LayoutId FragmentActivity: ora le sottoclassi di
FragmentActivity
possono chiamare un costruttore suFragmentActivity
che prende un IDR.layout
, per indicare il layout che deve essere impostato come visualizzazione del contenuto in alternativa alla chiamata disetContentView()
inonCreate()
. Ciò non modifica il requisito in base al quale la sottoclasse ha un costruttore senza argomento. - Costruttore LayoutId di frammento: le sottoclassi di
Fragment
ora possono facoltativamente chiamare un costruttore suFragment
che prende un IDR.layout
, per indicare il layout da utilizzare per questo frammento come alternativa all'override dionCreateView()
. Il layout gonfiato può essere configurato inonViewCreated()
. - Posticipa con un timeout: è stato aggiunto un nuovo sovraccarico di
postponeEnterTransition()
che richiede 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
Vengono rilasciati i rilasci di androidx.fragment:fragment:1.1.0-rc03
, androidx.fragment:fragment-ktx:1.1.0-rc03
e androidx.fragment:fragment-testing:1.1.0-rc03
. 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 risolto un arresto anomalo in
FragmentPagerAdapter
eFragmentStatePagerAdapter
durante la rimozione dell'elemento corrente. (b/137209870)
Versione 1.1.0-rc01
2 luglio 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-rc01
, androidx.fragment:fragment-ktx:1.1.0-rc01
e androidx.fragment:fragment-testing:1.1.0-rc01
. 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()
ohide()
mentre è in corso la transizione. (b/133385058) - È stato corretto un
NullPointerException
durante lo sblocco di unFragmentTransaction
che utilizzavasetPrimaryNavigationFragment()
prima direplace()
. (b/134673465)
Versione 1.1.0-beta01
5 giugno 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-beta01
, androidx.fragment:fragment-ktx:1.1.0-beta01
e androidx.fragment:fragment-testing:1.1.0-beta01
. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- I callback
androidx.lifecycle.Lifecycle
(in particolare correlati aSTARTED
,RESUMED
,PAUSED
,STOPPED
eDESTROYED
) per i frammenti nidificati sono ora nidificati correttamente. (b/133497591) OnBackPressedCallback
istanze registrate inonCreate()
di un frammento hanno ora correttamente la precedenza sul FragmentManager secondario. (b/133175997)- I frammenti figlio non sono più animati quando il relativo frammento padre viene sostituito. (b/121017790)
- Le animazioni e le transizioni dei frammenti ora vengono ignorate quando si utilizza
animateLayoutChanges="true"
e viene risolto un problema per cui i frammenti non venivano eliminati correttamente. (b/116257087)
Versione 1.1.0-alpha09
16 maggio 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-alpha09
, androidx.fragment:fragment-ktx:1.1.0-alpha09
e androidx.fragment:fragment-testing:1.1.0-alpha09
. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle 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
- Le voci di menu gonfiate da un Frammento secondario vengono ora rimosse correttamente quando viene rimosso il Frammento principale. B/131581013
Versione 1.1.0-alpha08
7 maggio 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-alpha08
, androidx.fragment:fragment-ktx:1.1.0-alpha08
e androidx.fragment:fragment-testing:1.1.0-alpha08
. 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 alle Preferenze 1.1.0-alpha05 quando utilizzi questa versione di Frammenti.
Nuove funzionalità
- È stato aggiunto un nuovo sovraccarico di
postponeEnterTransition()
che richiede un timeout, dopodiché il Frammento chiamerà automaticamentestartPostponedEnterTransition()
b/120803208
Modifiche alle API
- Modifica che interrompe la modifica: il metodo
FragmentFactory
instantiate
precedentemente obsoleto che utilizzavaBundle
è stato rimosso. aosp/953856 - Modifica che provoca un errore: le costanti
RESUME_ONLY_CURRENT_FRAGMENT
eUSE_SET_USER_VISIBLE_HINT
inFragmentPagerAdapter
eFragmentStatePagerAdapter
sono state rinominate rispettivamente inBEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
eBEHAVIOR_SET_USER_VISIBLE_HINT
. aosp/954782
Correzioni di bug
- I frammenti il cui ciclo di vita è stato limitato tramite
setMaxLifecycle()
non vengono più ripresi prima del raggiungimento dello stato finale. b/131557151 - Quando utilizzi
setMaxLifecycle(Lifecycle.State.CREATED)
, la visualizzazione dei frammenti verrà eliminata correttamente. aosp/954180
Versione 1.1.0-alpha07
25 aprile 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-alpha07
, androidx.fragment:fragment-ktx:1.1.0-alpha07
e androidx.fragment:fragment-testing:1.1.0-alpha07
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Ora puoi impostare uno stato di ciclo di vita massimo per un frammento richiamando
setMaxLifecycle()
su unFragmentTransaction
. Questo sostituisce l'elementosetUserVisibleHint()
, ora deprecato.FragmentPagerAdapter
eFragmentStatePagerAdapter
hanno un nuovo costruttore che ti consente di passare al nuovo comportamento. (b/129780800)
Modifiche alle API
- Ora
moveToState(STARTED)
suFragmentScenario
può essere chiamato solo su dispositivi con API 24 e versioni successive. (b/129880016)
Cambiamenti del comportamento
- Come conseguenza di (b/129907905), i frammenti nello stack posteriore non riceveranno un callback a
onCreateView()
quando l'attività di hosting viene ricreata. OraonCreateView()
verrà chiamato solo quando il frammento diventerà visibile (ad esempio, la pila posteriore è stata estratta).
Correzioni di bug
- È stato risolto un problema relativo all'utilizzo di un tag
<fragment>
in XML e del costruttorecontentLayoutId
diFragmentActivity
oAppCompatActivity
. (b/129907905) - È stato corretto un problema per cui i frammenti sullo stack posteriore non venivano spostati almeno in
CREATED
dopo una modifica alla configurazione, causando il mancato smaltimento dei ViewModel e dei frammenti conservati figlio. (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 per cui un elemento
OnBackPressedCallback
aggiunto con un ciclo di vita di frammenti non veniva chiamato seFragmentManager
aveva uno stack back. Per maggiori dettagli, vedi androidx.activity 1.0.0-alpha07. (aosp/948209). - I frammenti non applicano più
LAYER_TYPE_HARDWARE
per le animazioni. Se hai bisogno in particolare di un'animazione del livello hardware, impostala come parte dell'animazione. (b/129486478)
Versione 1.1.0-alpha06
3 aprile 2019
Vengono rilasciate le funzionalità androidx.fragment:fragment:1.1.0-alpha06
, androidx.fragment:fragment-ktx:1.1.0-alpha06
e androidx.fragment:fragment-testing:1.1.0-alpha06
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Le eccezioni generate da FragmentManager ora includono il nome del Fragment nel messaggio. (b/67759402)
Modifiche alle API
Fragment
eFragmentActivity
ora contengono un secondo costruttore che prende un@LayoutRes int
, che sostituisce il precedente comportamento di annotazione della classe con@ContentView
. Questo approccio funziona sia nei moduli delle app che delle librerie. (b/128352521)- L'elemento
onActivityResult()
di FragmentActivity è ora contrassegnato correttamente come@CallSuper
. (b/127971684) - Il metodo
instantiate
di Fragmentfabbrica che utilizza un bundle di argomento è stato deprecato e le app devono usare il nuovo sovraccaricoinstantiate
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
- È stato corretto un problema di regressione in 1.1.0-alpha05 che causava il flashing del frammento in ingresso 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
nella tua Attività durante il ripristino dello stato 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à
- Ora vengono memorizzate nella cache
@ContentView
ricerche di annotazioni (b/123709449)
Cambiamenti del comportamento
- La chiamata a
remove()
,hide()
,show()
,detach()
esetPrimaryNavigationFragment()
con un Fragment associato a un altro FragmentManager ora genera unIllegalStateException
invece di errore automatico (aosp/904301)
Correzioni di bug
onNewIntent
perFragmentActivity
è ora contrassegnato correttamente con@CallSuper
(b/124120586)- Risolto un problema per cui il
onDismiss()
diDialogFragment
poteva essere chiamato due volte quando si utilizzagetDialog().dismiss()
ogetDialog().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à
- Aggiunto il supporto per l'annotazione della classe
@ContentView
che consente di indicare quale file XML di layout deve essere aumentato in modo artificioso in alternativa all'override dionCreateView()
. Ti consigliamo di visualizzare il lavoro correlato inonViewCreated()
. (aosp/837619) fragment-testing
ora dipende dalla versione stabile diandroidx.test:core-ktx
1.1.0 (b/121209673)- Ora puoi utilizzare
openActionBarOverflowOrOptionsMenu
conFragmentScenario
per testare i menu delle opzioni ospitati dal frammento (b/121126668)
Modifiche alle API
- È stato aggiunto un metodo
requireArguments()
che restituisce un@NonNull Bundle
o genera unIllegalStateException
(b/121196360) - È stata aggiunta una nota che indica che
getLifecycle()
,getViewLifecycleOwner()
egetViewLifecycleOwnerLiveData()
non devono essere sostituiti e saranno resi definitivi in una release futura. Invia una richiesta di funzionalità se stai eseguendo l'override di questo metodo. (aosp/880714) - È stata aggiunta una nota che indica che
getViewModelStore()
non deve essere sostituito e sarà reso definitivo in una release futura. Invia una richiesta di funzionalità se stai eseguendo l'override di questo metodo. (aosp/880713) - È stato risolto un problema di compatibilità binaria con le versioni precedenti di Fragments. (aosp/887877) (aosp/889834)
Correzioni di bug
- I frammenti di destinazione vengono cancellati correttamente quando passi
null
asetTargetFragment()
. (aosp/849969). - È stato risolto un problema per cui i Frammenti target a volte non erano disponibili a partire dal giorno
onDestroy()
. (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à
- Il frammento ora implementa
BundleSavedStateRegistryOwner
e dipende dalla libreria SavedState appena rilasciata [aosp/824380] - È stato aggiunto un delegato della proprietà Kotlin
by activityViewModels
per recuperare i ViewModels associati all'attività contenitore [b/119050253] - Il delegato della proprietà Kotlin
by viewModels
è stato ampliato per utilizzare un metodo lambda facoltativo per ottenere ilViewModelStoreOwner
, che ti consente di passare nel frammento principale o in un altroViewModelStoreOwner
personalizzato con codice comeval viewModel: MyViewModel by viewModels(::requireParentFragment)
[b/119050253]
Modifiche alle API
FragmentScenario
ora ti consente di specificare un tema, ad esempioTheme.AppCompat
[b/119054431]. Questa è una modifica che provoca un errore.- È stato aggiunto un metodo
requireView()
che restituisce un@NonNull View
o genera unIllegalStateException
[b/120241368] - È stato aggiunto un metodo
requireParentFragment()
che restituisce un@NonNull Fragment
o genera unIllegalStateException
[b/112103783]
Correzioni di bug
- È stato corretto un errore di stato illegale: 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 viene aggiunto di nuovo [b/118880674]
Versione 1.1.0-alpha02
3 dicembre 2018
Nuove funzionalità
- Le estensioni Kotlin di FragmentScenario ora ti consentono di usare un lambda per la creazione di Fragment come alternativa al passaggio in un'istanza
FragmentFactory
. (aosp/812913)
Correzioni di bug
- È stata corretta un'eccezione illegale quando si utilizzavano frammenti nidificati nello stack posteriore (b/119256498)
- È stato corretto l'arresto anomalo durante l'utilizzo di
FragmentScenario.recreate()
con unFragmentFactory
(aosp/820540) - Risolto un problema per cui i Frammenti di destinazione non erano accessibili dopo la rimozione del frammento (aosp/807634)
Versione 1.1.0-alpha01
5 novembre 2018
Questa è la prima release della
fragment-testing
artefatto e FragmentScenario
che si basa su
API androidx.test:core. Per ulteriori dettagli, consulta la documentazione sui test dei frammenti.
Nuove funzionalità
- Nuova classe FragmentScenario per testare i frammenti in isolamento.
- Ora puoi impostare un
FragmentFactory
su qualsiasiFragmentManager
per controllare in che modo viene creata un'istanza di nuove istanze Fragment. - È stato aggiunto un nuovo delegato della proprietà Kotlin
by viewModels()
per il recupero ViewModels da un frammento. - Gli eventi di input in attesa (come i clic) vengono ora annullati nel campo
onStop()
.
Modifiche alle API
- Abbiamo espanso in modo significativo le annotazioni dei valori null nell'API Fragment superficie.
Correzioni di bug
- Risolvere un problema che causava la mancata riuscita delle operazioni frammentate in LiveData (b/77944637)
Problemi noti
- Non è possibile accedere ai Frammenti target dopo aver rimosso un Frammento dalla FragmentManager.
fragment-testing
dipende daandroidx.test:core:1.0.0-beta01
anziché daandroidx.test:core:1.0.0
corretta.