android - Obteniendo referencia de actividad en AndroidViewModel

CorePress2024-01-25  16

Tengo un AndroidViewModel con el que estoy usando GoogleSignIn. El método GoogleSignIn que estoy usando requiere un contexto de actividad para realizar SilentSignIn. Intenté usar el contexto de la aplicación que se proporciona con AndroidViewModel usando getApplication().

Aunque no arroja error en Android Studio

en tiempo de ejecución arroja el error:

No se puede transmitir el contexto de la aplicación

¿Cómo puedo obtener una referencia a la actividad que utiliza ViewModel?

public class MembersViewModel extends AndroidViewModel {

    public MembersViewModel(@NonNull Application application) {
        super(application);
        repo = new MembersRepo(application, this);
    }


public void signIn(){
   Log.d(TAG, "onGetMembers: Invalid Access Token...Logging in again");
   GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                     .requestIdToken(getApplication().getString(R.string.idclient))
                        .requestEmail()
                        .build();
   GoogleSignInClient googleSignInClient = GoogleSignIn.getClient(getApplication(), gso);
                

Tengo una actividad que utiliza un MembersFragment que utiliza MembersViewModel.



------------------------------------

¿Cómo puedo obtener referencias?e a la Actividad que utiliza el ViewModel?

No puedes.

En su lugar, haga que su MembersViewModel emita un evento que su actividad observe y responda haciendo lo que sea que necesite hacer con la actividad. "Emitir un evento" podría ser a través de un RxJava PublishSubject o un "evento en vivo único" forma de LiveData. Si estuvieras usando Kotlin, un BroadcastChannel sería otra posibilidad.

0



------------------------------------

¿Por qué no analizas un parámetro de contexto en el método de inicio de sesión para que cuando lo llames obtengas el contexto de actividad correcto?

Inicio de sesión público vacío en vivo (contexto contextual) { } para que pueda obtener el contexto de actividad correcto

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare