1
votes

CrossCurrentActivity est null dans la dépendance même s'il est initialisé et non nul dans l'application

Dans mon Xamarin.Forms a> projet, j'utilise Plugin.FirebaseAuth pour me connecter par numéro de téléphone. Cela fonctionne bien pour le projet iOS, mais pour Android, l'appel VerifyPhoneNumberAsync ()

var activity = CrossCurrentActivity.Current.Activity ?? throw new NullReferenceException("current activity is null"); 

lance "l'activité actuelle est nulle" à partir de CrossCurrentActivity. .Activity ?? archiver https://github.com/f-miyu/Plugin.FirebaseAuth/blob/master/Plugin.FirebaseAuth.Android/PhoneAuthProviderWrapper.cs

Plugin.CurrentActivity est initialisé (anciennement dans MainActivity.cs mais maintenant dans MainApplication.cs comme recommandé) sans erreur selon les instructions dans https://github.com/jamesmontemagno/CurrentActivityPlugin :

MainActivity.cs OnCreate ():

Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this);

MainApplication.cs OnCreate ():

Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, bundle);

J'obtiens la même erreur nulle lorsque j'appelle VerifyPhoneNumberAsync () quel que soit l'endroit où j'initialise CurrentActivity.

L'ajout de la ligne

await CrossFirebaseAuth.Current.PhoneAuthProvider.VerifyPhoneNumberAsync(CrossFirebaseAuth.Current.Instance, user.PhoneNumber);

dans mon MainActivity.cs ne génère directement aucune erreur.

Y a-t-il autre chose que je pourrais oublier?

Versions de dépendances

  • Plugin.FirebaseAuth 1.1.2
  • Xamarin.Forms 4.4.0.991265


2 commentaires

Avez-vous trouvé une solution à cela?


Pour moi, cela a commencé à fonctionner après la mise à niveau vers de nouvelles versions de dépendances.


3 Réponses :


2
votes

Au lieu de la méthode init, affectez simplement MainActivity à l'activité actuelle du plugin.

Essayez la solution ci-dessous pour définir l'activité actuelle.

CrossCurrentActivity.Current.Activity = this;

Remplacez par

Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, bundle);

J'ai eu le même problème. J'ai résolu ce problème en appliquant la même solution de travail dans mon cas.


1 commentaires

Merci pour le partage! Hélas, cela n'a pas fonctionné dans mon cas, mais j'espère que cela aidera quelqu'un d'autre qui tombe sur ce post.



1
votes

Si le plugin ne fonctionne pas dans votre projet.

Vous pouvez essayer le code suivant

//current activity
var currentActivity= Android.App.Activity;

//current context
var currentContext = Android.App.Application.Context;


0 commentaires

0
votes

Malheureusement, aucune des solutions suggérées précédemment n'a fonctionné dans mon scénario. Cependant, le problème s'est résolu de lui-même après la mise à niveau de plusieurs dépendances, notamment:

  • Plugin.FirebaseAuth 3.1.0
  • Xamarin.Forms 4.6.0.800

0 commentaires