В моем приложении форм Xamarin, сторона Android я хочу переопределить нажатие кнопки возврата на панели навигации. Я последовал этому руководству, но безуспешно. https://theconfuzedsourcecode.wordpress.com/2017/03/12/lets-override-navigation-bar-back-button-click-in-xamarin-forms/ Не срабатывает. Но OnBackPressed () работает хорошо.
MainActivity.
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
//, ScreenStateListener
{
const int RequestLocationId = 0;
readonly string[] PermissionsGroupLocation =
{
//TODO add more permissions
Manifest.Permission.AccessCoarseLocation,
Manifest.Permission.AccessFineLocation,
Manifest.Permission.AccessLocationExtraCommands,
Manifest.Permission.AccessMockLocation,
Manifest.Permission.ReadExternalStorage,
Manifest.Permission.WriteExternalStorage,
Manifest.Permission.ReadPhoneState,
Manifest.Permission.Camera
};
// CustApp.ScreenListener.ScreenListener mScreenListener;
protected async override void OnCreate(Bundle savedInstanceState)
{
await TryToGetPermissions();
Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
Forms.SetFlags("CollectionView_Experimental"); //added for carousal view
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
Xamarin.FormsMaps.Init(this, savedInstanceState);
Xamarin.FormsGoogleMaps.Init(this, savedInstanceState);
UserDialogs.Init(this);
ZXing.Net.Mobile.Forms.Android.Platform.Init();
CrossCurrentActivity.Current.Init(this, savedInstanceState);
Plugin.InputKit.Platforms.Droid.Config.Init(this, savedInstanceState);
LoadApplication(new App());
Android.Support.V7.Widget.Toolbar toolbar = this.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
SetSupportActionBar(toolbar);
// coded to disappear status bar
Window.AddFlags(WindowManagerFlags.Fullscreen);
Window.ClearFlags(WindowManagerFlags.ForceNotFullscreen);
// mScreenListener = new CustApp.ScreenListener.ScreenListener(this);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
if (item.ItemId == 16908332)
{
var currentpage =
Xamarin.Forms.Application.
Current.MainPage.Navigation.
NavigationStack.LastOrDefault() as HPayment;
if (currentpage?.CustomBackButtonAction != null)
{
// invoke the Custom back button action
currentpage?.CustomBackButtonAction.Invoke();
// and disable the default back button action
return false;
}
// if its not subscribed then go ahead
// with the default back button action
return base.OnOptionsItemSelected(item);
}
else
{
return base.OnOptionsItemSelected(item);
}
}
public override void OnBackPressed()
{
if (Rg.Plugins.Popup.Popup.SendBackPressed(base.OnBackPressed))
{
// Do something if there are some pages in the `PopupStack`
Task.Run(async () =>
{
popupPageClickInstance.Instance.popupPageSuccess = false;
AdvertisementInstance.Instance.AdvertisementIsSeen = false;
await PopupNavigation.Instance.PopAsync();
});
}
else
{
// Do something if there are not any pages in the `PopupStack`
}
}
}