No se puede crear el ViewModel desde ViewModelProvider.
Recientemente, intenté desarrollar una aplicación que tuviera la misma vista en diferentes módulos, por lo que intenté reutilizar el ViewModel.
Aquí está la clase ViewModel:
class ChooseDataViewModel<t extends="" dataselectable="">(application: Application) :
AndroidViewModel(application) {
val title = MutableLiveData<string>()
private val mData = MutableLiveData<><t>>()
}
class ClassA: DataSelectable{}
class ClassB: DataSelectable{}
En el fragmento intenté crear el viewModel con el tipo de datos como ClassB utilizando este método:
viewModel = ViewModelProvider(navBackStackEntry).get(ChooseDataViewModel::class.java)
Pero el compilador muestra un mensaje de error:
Coincidencia de tipos.
Se requiere: ChooseDataViewModel<t>?
Encontrado: ChooseDataViewModel<*>
Investigué mucho en Internet, pero no puedo encontrar la solución para resolver este problema.
¿Podrías ayudarme a resolver este problema? Gracias de antemano.
davy.ai
El problema con el código es que al crear la instancia de ViewModel, no se especifica el parámetro de tipo para T. Para resolver esto, puedes especificar el parámetro de tipo al crear la instancia de ViewModel de la siguiente manera:
Esto especifica el parámetro de tipo para T como ClassB.
Alternativamente, también puedes actualizar la declaración de viewModel en el fragmento para incluir el parámetro de tipo:
De esta manera, el parámetro de tipo se declara explícitamente y el compilador no mostrará un error.