Diferencia entre onCreateView y onViewCreated en Fragmento
¿Cuál es la diferencia esencial entre estos dos métodos? Cuando creo un TextView, ¿debo utilizar uno sobre el otro para el rendimiento?
Editar: ¿Cuál es la diferencia de
- ¿Cuándo debo obtener la vista de ancho en el fragmento
- Selección de recursos de Android y valores e inconsistencias
- Anulación del diseño utilizado para una preferencia en una preferenciaActividad / preferencia Pantalla utilizando temas
- Cambiar el color del divisor en Android PreferenciaActividad
- ¿Cómo mostrar un diseño encima del otro programmatically en mi caso?
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); }
- Cómo crear el centro de tabbar en android?
- Cómo diseñar una 'cuadrícula' de imágenes en el centro de la pantalla
- ¿Cómo agrego el cajón de navegación a mi código existente?
- ¿Por qué los pesos anidados son malos para el rendimiento? ¿Alternativas?
- Definir elementos de desbordamiento de barras de acción
- Disposición de Android por debajo y por encima
- El diálogo del progreso tiene el fondo blanco en dispositivos del Lollipop,
- Derecho Drawable en Android. No funciona
onViewCreated
se llama inmediatamente después de onCreateView
(el método que inicializa y crea todos sus objetos, incluyendo su TextView
), por lo que no es una cuestión de rendimiento.
Desde el sitio de desarrollo:
OnViewCreated (vista de vista, Bundle savedInstanceState)
Se llama inmediatamente después de que onCreateView (LayoutInflater, ViewGroup, Bundle) ha regresado, pero antes de que se haya restaurado cualquier estado guardado en la vista. Esto da a las subclases una oportunidad de inicializarse una vez que saben que su jerarquía de vista ha sido completamente creada. Sin embargo, la jerarquía de vista del fragmento no está conectada a su padre en este momento.
Es mejor hacer cualquier asignación de subviews a los campos en onViewCreated
. Esto se debe a que el marco realiza una comprobación nula automática para asegurarse de que la jerarquía de vista de su fragmento se ha creado e inflado (si utiliza un archivo de diseño XML) correctamente.
Fragmento de código 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
devuelve la vista inflada. OnViewCreated
se llama justo después de onCreateView
y get tiene el parámetro de la vista inflada. Su tipo de devolución es void
Nos enfrentamos a algunos fallos al inicializar la vista en onCreateView
.
Debe inflar su diseño en
onCreateView
pero no debe inicializar otras vistas usandofindViewById
enonCreateView
.
Porque a veces la vista no se inicializa correctamente. Así que siempre use findViewById
en onViewCreated
(cuando la vista está completamente creada) y también pasa la vista como parámetro.
onViewCreated
es un asegúrese de que la vista está completamente creada.
onCreateView()
es el equivalente de fragmento de onCreate()
para Actividades y se ejecuta durante la creación de vista.
onViewCreated()
ejecuta después de que se haya creado la vista.
should I use one over the other for performance?
NO . No hay evidencia de un aumento de rendimiento.
En realidad, hay un método onCreate()
en Framents, también.
Pero rara vez se utiliza ( nunca lo uso, ni encontrar un buen caso de uso para ello).
Siempre uso onCreateView()
en Fragments como un reemplazo para onCreate()
.
Y estoy feliz con eso.
OnCreateView se utiliza en el fragmento para crear el diseño e inflar la vista. OnViewCreated se utiliza para hacer referencia a la vista creada por el método anterior. Por último, es una buena práctica definir el oyente de acción en onActivityCreated.
La razón principal por la que usaría onViewCreated
es que separa cualquier lógica de inicialización de la lógica de creación / inflación de jerarquía de vista que debería ir en el onViewCreate
. Todas las demás características de rendimiento tienen el mismo aspecto.