Evitar el cierre por botón de nuevo en formularios xamarin en android

Quiero evitar el cierre de la aplicación pulsando el botón de hardware atrás en formularios xamarin en android.

Quiero, que usted puede navegar con el botón de hardware atrás en la aplicación (lo que está funcionando), pero no quiere salir, cuando se alcanza la primera página en la pila de navegación.

Intenté usar el evento OnSleep en formularios xamarin, pero aquí no puedo cancelar la salida.

También traté de recuperar el botón de retroceso en android:

public override void OnBackPressed() { //base.OnBackPressed(); } 

Pero cuando se utilizan formularios xamarin, no sé qué página se muestra actualmente. Así que no sé si la navegación está permitida o no

Funciona con la evaluación de NavigationStack (cuando se utiliza NavigationPage).

En mi Actividad, anula la función OnBackPressed

 public override void OnBackPressed() { if(App.Instance.DoBack) { base.OnBackPressed(); } } 

En mi aplicación de formularios xamarin (App.Instance (es un singleton)), evaluaré el NavigationStack de la página actual como esta.

 public bool DoBack { get { NavigationPage mainPage = MainPage as NavigationPage; if (mainPage != null) { return mainPage.Navigation.NavigationStack.Count > 1; } return true; } } 

Cuando solo hay una página en el NavigationStack, no llamaré base.OnBackPressed, para que no cierre la aplicación.

![prueba]

Y esto es lo que podría parecer el código para un escenario de página de Xamarin Forms MasterDetail …

  public bool DoBack { get { MasterDetailPage mainPage = App.Current.MainPage as MasterDetailPage; if (mainPage != null) { bool canDoBack = mainPage.Detail.Navigation.NavigationStack.Count > 1 || mainPage.IsPresented; // we are on a top level page and the Master menu is NOT showing if (!canDoBack) { // don't exit the app just show the Master menu page mainPage.IsPresented = true; return false; } else { return true; } } return true; } } 

Simplemente dé una llamada en blanco en la página donde quiere prevenir, como

 protected override bool OnBackButtonPressed() { return true; } 

Esto evitará que el botón de retroceso en XF-Droid.

Esta es una solución que funciona en Android.
Introduzca un contador en la clase de aplicación e incremente con cada OnStart y decremente con cada OnStop esta manera cuando el contador es 1 usted sabrá que está en su última actividad.

No hace falta decir que utiliza una implementación de actividad básica para que no tenga que copiar el código de la placa de la caldera.

  • Xamarin Form Master Página de detalles que no se muestra
  • Cómo configurar la orientación ContentPage en Xamarin.Forms
  • Línea azul claro sobre mi barra de navegación en la aplicación de Android
  • Consulta del cliente de Azure Mobile Service que no devuelve el control a Xamarin Form android client app
  • Botón de acción flotante en Xamarin.Forms
  • Xamarin.Auth obtener disallowed_useragent error
  • Xamarin.Forms MissingMethodException: 'Android.Support.V4.Widget.DrawerLayout.AddDrawerListener' no encontrado
  • Xamarin Forms Navegación de página MasterDetail causando un accidente en android , Funciona en iOS y UWP
  • Xamarin.forms mezclando ContentPage y la actividad de Android
  • El mensaje de la nube de Google 'Not Registered' falla y se cancela la suscripción de las mejores prácticas?
  • Xamarin.Forms implementa AndHud y BTProgressHud
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.