Je regardais le documentation et j'ai trouvé ceci
Cette classe a été supprimée au niveau P de l'API.
Pourquoi les fragments sont-ils dépréciés dans Android P ?
Je regardais le documentation et j'ai trouvé ceci
Cette classe a été supprimée au niveau P de l'API.
Pourquoi les fragments sont-ils dépréciés dans Android P ?
Le message moyen de Ian (28 février 2018) nous donne une explication à ce sujet. Il est développeur du cadre Android chez Google.
Chargeurs dans la bibliothèque de support 27.1.0
Pour la bibliothèque de support 27.1.0, j'ai réécrit les éléments internes de LoaderManager, la classe qui alimente l'API des chargeurs, et j'ai voulu expliquer le raisonnement derrière les changements et ce à quoi il faut s'attendre pour l'avenir.
Chargeurs et Fragments, une histoire
Dès le début, les Chargeurs et les Fragments ont été assez étroitement liés à la hanche. Cela signifie qu'une grande partie du code dans FragmentActivity et Fragment était là pour supporter les Chargeurs, malgré le fait qu'ils soient en fait assez indépendants.Ce qui a changé dans la version 27.1.0
Avec la version 27.1.0, la dette technique des chargeurs a été considérablement réduite :Remarque : évidemment, ces changements ne s'appliquent qu'aux chargeurs de bibliothèque de support. Si vous utilisez les chargeurs du framework Android, veuillez passer aux chargeurs de la bibliothèque de support dès que possible. Aucune correction de bogue ou amélioration n'est prévue pour les API des chargeurs de framework.
Il semble que le code dans Fragment
et FragmentActivity
a été remanié afin de faire des chargeurs une dépendance optionnelle.
Selon le bon de sortie la nouvelle mise en œuvre est basée sur Lifecycle
.
Changements importants
L'implémentation sous-jacente de Chargeurs a été réécrit pour utiliser Cycle de vie .
Sur Bibliothèque de support 26.1.0 , Fragment
et FragmentActivity
a adopté Lifecycle
.
Il s'agit d'une version spéciale visant à intégrer la bibliothèque de support aux cycles de vie des composants d'architecture. Si vous n'utilisez pas la bibliothèque Lifecycles, vous n'avez pas besoin de faire la mise à jour depuis la version 26.0.2. Pour plus d'informations, consultez les notes de version de Architecture Components.
Changements importants
- Fragment et FragmentActivity (la classe de base pour AppCompatActivity) implémentent maintenant l'interface LifecycleOwner de Architecture Components.
En revanche, Fragment et Activité dans Android P n'ont pas implémenté l'interface LifecycleOwner
.
Sur le post Google+ (mentionné dans La réponse de ThanosFisherman ), Ian a fait un commentaire :
vous ne pouvez pas modifier le code d'un cadre après qu'il a été expédié - il est littéralement figé dans le temps. Cela signifie qu'il n'y a pas de nouvelles fonctionnalités et, surtout, pas de correction de bogues. Ce n'est pas une bonne expérience pour les développeurs, en particulier lorsque nous disposons d'une version entièrement supportée, à jour et rétrocompatible dans la bibliothèque de support.
Je pense que c'est la raison pour laquelle Android P n'adopte pas Lifecycle
. Par conséquent, Fragment
est déprécié dans Android P.
Au cas où quelqu'un chercherait le moyen d'instancier les fragments par le nom de la classe.
Fragment.instantiate(context, fragmentClass)
val fm: FragmentManager = ...
fm.fragmentFactory.instantiate(ClassLoader.getSystemClassLoader(), fragmentClass)
Nom du fichier : FragmentManagerExt.kt
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
fun FragmentManager.instantiate(className: String): Fragment {
return fragmentFactory.instantiate(ClassLoader.getSystemClassLoader(), className)
}
val fragment = supportFragmentManager.instantiate(fragmentClassName)
Les fragments de bibliothèque de support sont là pour rester. Google vous encourage à utiliser les versions de la bibliothèque d'assistance pour bénéficier d'un comportement cohérent à tous les niveaux d'API, de corrections de bogues rétroportées et de la prise en charge de Lifecycle et ViewModel.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
17 votes
Ceux qui ont donné un vote négatif ou qui envisagent de le faire, peuvent-ils donner une raison valable ? Je pense que c'est une vraie question et qu'elle peut nous apporter des réponses pertinentes.
1 votes
Les questions sur les raisons de faire quelque chose n'ont de sens que si vous demandez à celui qui le fait. Dans ce cas, vous devez demander à Google.
2 votes
Est-il encore utile d'utiliser Fragments en 2018, maintenant que seule l'implémentation du support fonctionne ? Que faut-il utiliser à la place ?
3 votes
@RoyalGriffin, les downvoters sont des haineux. Ils ne peuvent pas expliquer leur comportement, ils voient juste les règles de l'OS (qui sont illogiques), puis marquent avec des moins et demandent aux modérateurs de fermer ou de supprimer une question (et parfois une bonne réponse).
1 votes
@VladyslavMatviienko, au moins, certaines bibliothèques utilisent des fragments sans support.v4. Dans les nouveaux projets, nous les avons également utilisés. Même AS ajoute des fragments par défaut (avec Fichier > Nouveau > Fragment).
3 votes
@TheincredibleJan Les représentants de Google lisent et interagissent avec les questions relatives à Android sur SO, c'est donc le bon forum.
0 votes
@TWiStErRob Une preuve qu'ils interagissent avec ce genre de questions ? Je ne l'ai jamais vu...
0 votes
@TheincredibleJan voir Doug sur stackoverflow.com/q/36487971/253468 Ceci étant dit, il n'y a aucune garantie qu'ils donnent des informations utiles :(