Obtener FragmentManager dentro de AndroidViewModel

AndroidViewModel se utiliza para acceder al context de la Application . Intento acceder al FragmentManager Activity sin pasarlo explícitamente:

 class FooViewModel(app: Application) : AndroidViewModel(app) { private val fm = (app.applicationContext as Activity).fragmentManager .. } 

Obteniendo error, no se puede convertir Context a Activity .


Pregunta : ¿hay alguna forma de get FragmentManager dentro de AndroidViewModel sin pasarlo explícitamente?

Creo que la respuesta breve será "no, no hay forma" , porque el context de la Application no tiene conocimiento de FragmentManager .

FragmentManager es un object que pueden tener las subclasss de FragmentActivity . Application no es una subclass de FragmentActivity .

Otra pregunta sería, ¿por qué necesitarías una instancia de FragmentManager dentro de tu ViewModel ? Lo más probable es que deba delegar cosas relacionadas con la vista para manejar a otra unidad que no sea ViewModel (por ejemplo, Activity , Fragment ). Tenga en count que este ViewModel se mantendrá sobre el cambio de configuration, por lo tanto, si mantiene una reference al FragmentManager dentro de su ViewModel , estaría filtrando su instancia de Activity .

  • Método de extensión en WeakReference
  • Kotlin: el operador '==' no se puede aplicar a '¡Editable!' y 'String' al comparar cadenas
  • Pasar un object detector como un parámetro de function en kotlin
  • Kotlinx no puede resolver el símbolo "sintético"
  • Cadena para duplicar en Android / Kotlin
  • Android OutOfMemoryError: no se pudo asignar una asignación de bytes 57993496 con 16764448 bytes libres
  • ¿Por qué son válidos tanto val box1 como val box2 en Kotlin?
  • El depurador Java seleccionado actualmente no admite puntos de interrupción de tipo 'Kotlin Line Breakpoints'
  • java.lang.IllegalArgumentException: Callable espera 4 arguments, pero se proporcionaron 3
  • No se puede crear un nuevo usuario
  • Crea una instancia de anotación en Kotlin