重写同一函数两次



为了在运行时请求权限,我使用了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将调用哪个函数?

在父活动中,我有一个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来区分请求的哪一方。

最新更新