两次重写相同的功能

时间:2019-04-23 19:51:36

标签: c# android xamarin

为了在运行时请求权限,我使用了RequestPermissions函数。

我两次使用RequestPermissions函数。一次进入一个片段(void Android.Support.V4.App.Fragment.RequestPermissions),一次进入主要活动(void Activity.RequestPermissions)。

为此,我两次覆盖了OnRequestPermissionsResult函数-似乎void Android.Support.V4.App.Fragment.RequestPermissions实际上在结束时变成了void MainActivity.OnRequestPermissionsResult。我该如何使用其他OnRequestPermissionsResult

最主要的是,两次重写同一函数会发生什么?哪个版本适用? OnRequestPermissionsResult是我的问题,这里以示例为例,但我想它属于更大的事情。

另一种询问方式是如何确定完成后将调用哪个函数RequestPermissions

1 个答案:

答案 0 :(得分:1)

在父级活动中,我有一个OnRequestPermissionsResult方法,

 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        Toast.MakeText(this, "Activity", ToastLength.Short).Show();
        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }

然后分段,我使用按钮单击并调用以请求权限:

button.Click += delegate
   {
     RequestPermissions(new string[] { Manifest.Permission.Camera }, 0);
   };

,并且在片段中还有一个OnRequestPermissionsResult方法:

 public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
    {
        Toast.MakeText(Activity, "Fragment", ToastLength.Short).Show();
        base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
    }

最后,回调将输入活动的OnRequestPermissionsResult,然后输入片段的OnRequestPermissionsResult,因此您可以自定义requestCode来区分请求的哪一边。