Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
En kotlin, ¿cómo usar ViewModel con ViewModelProvider.AndroidViewModelFactory?

En mi proyecto actual, uso la siguiente línea:

 mViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)

Por ejemplo, un ViewModel pero en https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.html#ViewModelProviders() recomienda usar ViewModelProvider.AndroidViewModelFactory porque ViewModelProviders() quedó obsoleto en el nivel de API 1.1.0.

alguna idea para este fin?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si tuviera un ViewModel simple que extendiera AndroidViewModel sin ningún parámetro de construcción adicional, es el siguiente

  1. Extienda AndroidViewModel sin ningún parámetro de constructor adicional
 class FooViewModel(application: Application) : AndroidViewModel(application) {}
  1. Crear modelo de vista en actividad
 val viewModel = ViewModelProvider(this).get(FooViewModel::class.java)

Pero si tuviera un ViewModel que extendiera AndroidViewModel con cualquier parámetro de constructor adicional, es el siguiente

  1. Extienda AndroidViewModel con cualquier parámetro de constructor adicional
 class FooViewModel(application: Application, foo: Foo) : AndroidViewModel(application) {}
  1. Cree una nueva fábrica de modelos de vista que amplíe ViewModelProvider.AndroidViewModelFactory
 class FooViewModelFactory(val application: Application, val foo: Foo): ViewModelProvider.AndroidViewModelFactory(application) { override fun <T : ViewModel?> create(modelClass: Class<T>): T { return FooViewModel( application, foo ) as T } }
  1. Crear modelo de vista en actividad
 val viewModel = ViewModelProvider(this, FooViewModelFactory(application, foo)).get(FooViewModel::class.java)
over 4 years ago · Santiago Trujillo Denunciar

0

EDITAR: la pregunta original ahora es irrelevante, ya que ya no debe usar la clase de utilidad ViewModelProviders . En su lugar, debe crear una instancia de ViewModelProvider así:

 val viewModel = ViewModelProvider(thisFragment).get(MyViewModel::class.java)

Respuesta original a continuación.


ViewModelProviders es solo una clase de utilidad con métodos estáticos, no es necesario crear una instancia (de todos modos, no hay métodos de instancia), por lo que el constructor en desuso no debería ser una preocupación.

La forma en que lo usa es llamando al método apropiado para su caso of uso, pasando un Fragment o Activity , y luego llamando a get en el ViewModelProvider que devuelve:

 val viewModel = ViewModelProviders.of(thisFragment).get(MyViewModel::class.java)

Si no proporciona su propia fábrica en el segundo parámetro of , AndroidViewModelFactory se usará de manera predeterminada. Esta implementación puede crear subclases de ViewModel que no tengan parámetros de constructor, o que amplíen AndroidViewModel , como por ejemplo:

 class MyViewModel(application: Application) : AndroidViewModel(application) { // use application }
over 4 years ago · Santiago Trujillo Denunciar

0

puedes probar este codigo

 ViewModelProvider.AndroidViewModelFactory.getInstance(application).create(UserViewModel::class.java)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda