xamarin 我试图同时实现两个接口,以避免由于需要从ComponentActivity和FragmentActivity继承而导致的错误

fjaof16o  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(105)

我使用Xamarin.Android进行基本登录,其中我有OnBackPressedDispatcher,它需要从ComponentActivity继承并使用指纹认证。我有:

Xamarin.Essentials.Platform.Init((Activity)context, savedInstanceState);
CrossCurrentActivity.Current.Init((Activity)context, savedInstanceState);
CrossCurrentActivity.Current.Activity = (Activity)context;
CrossFingerprint.SetCurrentActivityResolver(() => Xamarin.Essentials.Platform.CurrentActivity);

这要求Activity继承自FragmentActivity。问题是它不兼容,类似于公共类LoginActivity:ComponentActivity,FragmentActivity不能使用,因为我收到一个错误,说它不能有多个基类。
当我的Activity没有从FragmentActivity继承时,我在执行指纹请求时收到以下错误:System.InvalidOperationException:'预期当前活动为'AndroidX.Fragment.App.FragmentActivity',但实际上是'ControlAusencias.App. LoginActivity '。你必须使用AndroidX。您是否在Android应用程序项目中安装了Xamarin.AndroidX.Migration!?
如果我更改继承类型,我会收到一个编译错误,因为OnBackPressedDispatcher要求它从ComponentActivity继承。

cyvaqqii

cyvaqqii1#

不,在C#中不可能同时从两个类继承。
但是,您可以尝试使用AppCompatActivity类,该类继承自ComponentActivity和FragmentActivity。这样,您可以在同一Activity中同时使用OnBackPressedDispatcher和CrossFingerprint。
关于第二个问题,为了使用CrossFingerprint,需要继承FragmentActivity,因为这个库需要使用片段。如果不想从ComponentActivity继承,可以尝试使用不需要使用片段的替代库进行生物特征验证。xD

相关问题