Como otros han mencionado, hay algo de AndroidViewModello que puede derivar para obtener la aplicación, Contextpero por lo que recopilé en los comentarios, está tratando de manipular los mensajes de correo electrónico @drawabledesde su interior, lo ViewModelque frustra el propósito de MVVM.
En general, la necesidad de tener un Contexten su ViewModelcasi universal sugiere que debería considerar repensar cómo divide la lógica entre sus Viewy ViewModels.
En lugar de ViewModelresolver los elementos dibujables y alimentarlos con la Actividad / Fragmento, considere hacer que el Fragmento / Actividad haga malabarismos con los elementos dibujables en función de los datos que posee ViewModel. Digamos que necesita que se muestren diferentes elementos de diseño en una vista para el estado de encendido / apagado; es el ViewModelque debería contener el estado (probablemente booleano), pero Viewes asunto de ellos seleccionar el elemento de diseño en consecuencia.
Se puede hacer bastante fácil con DataBinding :
<ImageView
...
app:src="@{viewModel.isOn ? @drawable/switch_on : @drawable/switch_off}"
/>
Si tiene más estados y elementos de diseño, para evitar una lógica difícil de manejar en el archivo de diseño, puede escribir un BindingAdapter personalizado que traduzca, digamos, un Enumvalor en R.drawable.*(por ejemplo, juegos de cartas)
O tal vez lo que necesita el Contextpor algún componente que se utiliza dentro de su ViewModel- a continuación, crear el componente fuera del mismo ViewModely pasarlo en Puede utilizar DI, o únicos, o crear el. ContextDerecho componente dependiente antes de inicializar el ViewModelen Fragment/ Activity.
Por qué molestarse: Contextes algo específico de Android, y depender de los de ViewModels es una mala práctica: se interponen en el camino de las pruebas unitarias. Por otro lado, sus propias interfaces de componentes / servicios están completamente bajo su control, por lo que puede simularlas fácilmente para probarlas.
AndroidViewModelpero lo obtengaCannot create instance exception, puede consultar esta respuesta stackoverflow.com/a/62626408/1055241