Estoy usando datos en vivo en mi aplicación para todas las llamadas de red y manejo de respuestas.
En uno de los escenarios, mi vista de reciclador está cargando algunos datos en su titular de vista onBind
y la respuesta está actualizando la interfaz de usuario. Para hacerlo, tengo que proporcionar un lifecycleOwner
al observador.
Como la vista de reciclador no tiene ningún propietario de ciclo de vida propio, estoy usando el fragmento padre para eso usando parentFragment.viewlifecycleOwner
pero de alguna manera está dando un error.
¿Cómo puede un titular de vista tener su instancia cuando el fragmento padre no tiene su instancia?
viewModel.responseState.observe(parentFragment.viewLifecycleOwner, Observer {
updateUI(it)
})
Excepción grave: java.lang.IllegalStateException: no se puede acceder al LifecycleOwner de Fragment View cuando getView () es nulo, es decir, antes de onCreateView () o después de onDestroyView ()
fuente
Respuestas:
La solución para mí fue simplificada. Estoy utilizando observadores separados, uno para la red que está utilizando Lifecycleowner de la actividad principal (o simplemente de cualquier actividad) y otro para la vista de fragmentos (vista de modelo, vista, modelo).
fuente
En la documentación de getViewLifecycleOwner ( ), no creo que pueda explicarlo mejor:
fuente
La solución, como su comentario, es garantizar que la vista del fragmento no sea nula. Esto me sucedió con un Fragmento dentro de un ViewPager.
fuente