CrossCurrentActivity在依赖项中为null,即使它已初始化,在应用程序中也不为null

问题描述 投票:1回答:2

在我的Xamarin.Forms项目中,我正在使用Plugin.FirebaseAuth通过电话号码登录。

对于iOS项目,它工作正常,但对于Android,VerifyPhoneNumberAsync()调用

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

CrossCurrentActivity.Current.Activity ??中的https://github.com/f-miyu/Plugin.FirebaseAuth/blob/master/Plugin.FirebaseAuth.Android/PhoneAuthProviderWrapper.cs检查中抛出“当前活动为空”

Plugin.CurrentActivity已初始化(以前在MainActivity.cs中,但现在建议在MainApplication.cs中进行初始化),没有错误,但没有按照https://github.com/jamesmontemagno/CurrentActivityPlugin中的说明进行操作:

MainActivity.cs OnCreate():

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

MainApplication.cs OnCreate():

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

无论我在哪里初始化CurrentActivity,都通过调用VerifyPhoneNumberAsync()会得到相同的null错误。

添加

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

MainActivity.cs中的行直接不引发任何错误。

还有什么我可以忽略的吗?

依赖版本

  • Plugin.FirebaseAuth 1.1.2
  • Xamarin.Forms 4.4.0.991265
c# xamarin.forms plugins xamarin.android dependencies
2个回答
0
投票

代替init方法,只需将MainActivity分配给插件当前活动。

尝试以下解决方案来设置当前活动。

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

替换为

CrossCurrentActivity.Current.Activity = this;

我有同样的问题。我已通过在我的情况下应用相同的工作解决方案来解决此问题。


0
投票

如果插件在您的项目中不起作用。

您可以尝试以下代码

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

//current context
var currentContext = Android.App.Application.Context;
© www.soinside.com 2019 - 2024. All rights reserved.