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.
- Xamarin.Forms ListView OutOfMemoryError excepción en Android
- Xamarin forma la posición de los elementos de la barra de herramientas para Android
- Xamarin implementación de Android no utiliza el código más reciente?
- Xamarin Forms ToolBarItem (Número sobre el icono) Notificación
- No se pueden establecer propiedades en clases anidadas desde Xaml
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
- ¿Cómo detectar Golpe izquierdo y Golpe derecho para Stacklayout en Xamarin.Forms?
- Convertir Xamarin.Forms.Color a color específico de la plataforma
- Convertir automáticamente el código entre Xamarin iOS y Xamarin Android
- Cómo agregar evento de clic en la disposición o marco de pila
- ¿Por qué la misma interfaz se procesa de manera diferente en un emulador y un dispositivo?
- ¿Cómo puedo cambiar el color de un elemento seleccionado en un ListView?
- Obtenga el contexto de Android en el proyecto PCL
- Proguard en gris en ciertas configuraciones de construcción
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.
- No se puede deshabilitar la aplicación de producción en la consola de Google Play para desarrolladores en favor de la versión beta.
- Cómo obtener el estado de la casilla de verificación en el listview expandible en android