Quelle est la différence essentielle entre ces deux méthodes? Lorsque je crée un TextView, dois-je en utiliser un pour la performance?
Edit: Quelle est la différence avec
onCreateView() {
root = some view
View v = new View(some context);
root.add(v);
return root;
}
onViewCreated() {
View v = new View(some context);
getView().add(v);
}
Nous sommes confrontés à des incidents d'initialisation de la vue dans onCreateView
.
Vous devriez gonfler votre présentation dans
onCreateView
mais ne pas initialiser d'autres vues à l'aide defindViewById
dansonCreateView
.
Parce que parfois, la vue n'est pas correctement initialisée. Donc, utilisez toujours findViewById
dans onViewCreated
(lorsque la vue est entièrement créée) et passe également la vue en tant que paramètre.
onViewCreated
est un moyen de s’assurer que la vue est entièrement créée.
onViewCreated
est appelé immédiatement après onCreateView
(la méthode que vous initialisez et créez tous vos objets, y compris votre TextView
), il ne s'agit donc pas d'une question de performance.
Sur le site du développeur:
onViewCreated (Afficher la vue, Bundle savedInstanceState)
Appelé immédiatement après le retour de onCreateView (LayoutInflater, ViewGroup, Bundle), mais avant que tout état enregistré ait été restauré dans la vue. Cela donne aux sous-classes une chance de s'initialiser une fois qu'ils savent que leur hiérarchie de vues a été complètement créée. La hiérarchie de vue du fragment n'est toutefois pas attachée à son parent à ce stade.
Source: Fragment # onViewCreated
Il est préférable d’affecter des vues secondaires aux champs de la variable onViewCreated
. Cela est dû au fait que la structure effectue un contrôle null automatique pour vous assurer que la hiérarchie de vues de votre fragment a été créée et gonflée correctement (si vous utilisez un fichier de présentation XML).
Extrait de code de: FragmentManger.Java
// This calls onCreateView()
f.mView = f.performCreateView(f.getLayoutInflater(f.mSavedFragmentState), null, f.mSavedFragmentState);
// Null check avoids possible NPEs in onViewCreated
// It's also safe to call getView() during or after onViewCreated()
if (f.mView != null) {
f.mView.setSaveFromParentEnabled(false);
if (f.mHidden) f.mView.setVisibility(View.GONE);
f.onViewCreated(f.mView, f.mSavedFragmentState);
}
onCreateView
renvoie la vue gonflée. OnViewCreated
est appelé juste après onCreateView
et get a paramètre la vue gonflée. Son type de retour est void
onCreateView()
est l'équivalent en fragment de onCreate()
pour les activités et exécute pendant la création de la vue.onViewCreated()
exécute après la vue a été créée.
should I use one over the other for performance?
NO. Il n'y a aucune preuve d'amélioration de la performance.
Il existe également une méthode onCreate()
dans Framents.
Mais c’est (rarement} _ utilisé (je l’utilise jamais, et ne trouve pas un bon cas d’utilisation pour cela).
J'utilise toujours onCreateView()
dans Fragments en remplacement de onCreate()
.
.__ Et je suis content de ça.
je pense que la principale différence entre ceux-ci est lorsque vous utilisez kotlin.fr onCreateView () à chaque fois que vous souhaitez accéder à l'affichage dans votre fichier xml, vous devez utiliser findViewById mais dans onViewCreated vous pouvez accédez simplement à votre vue en appelant simplement son identifiant.
onCreateView est utilisé dans fragment pour créer une disposition et une vue gonflée . onViewCreated est utilisé pour référencer la vue créée par la méthode ci-dessus .
La raison principale pour laquelle je voudrais utiliser onViewCreated
est qu’elle sépare toute logique d’initialisation de la logique d’inflation/création dans la hiérarchie des vues, qui devrait figurer dans onViewCreate
. Toutes les autres caractéristiques de performance se ressemblent.