PhoneGap + jQueryMobile: El botón de retroceso de Android cierra la aplicación en la lista anidada

Estoy creando una aplicación usando PhoneGap y jQuery Mobile.

Uso de jQuery Mobile He creado una lista anidada.

Después de hacer clic en la lista anidada quiero volver. Espero que al hacer clic en el botón Atrás de mi Android (N1) que va a volver un nivel.

Pero en lugar de Android se cierra la aplicación en lugar de volver a un nivel.

Utilizando PhoneGap 1.2.0, jQuery Mobile v1.0rc2, jQuery 1.6.4, Android 2.3.3.

Editar: Actualizar a jQuery Mobile 1.0 y no hay cambio

Tengo este mismo problema, encontré cómo manejar el botón de volver en el código java.

Esto se remonta un paso si es posible o bien la salida de la aplicación.

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if(appView.canGoBack()){ appView.goBack(); return true; } } return super.onKeyDown(keyCode, event); } 

También es posible hacerlo en el lado javascript:

 document.addEventListener("backbutton", function() { //Logic// }, false); 

Puede escuchar los eventos de botón de nuevo:

 document.addEventListener("backbutton", onBackKeyDown, false); function onBackKeyDown() { // Handle the back button } 

Y si la página actual es homepage ($ .mobile.activePage en jquery mobile) sale de la aplicación con:

Navigator.app.exitApp ();

Intenta también:

 function onBackKeyDown(e) { e.preventDefault(); if ($.mobile.activePage.attr('id') == 'main') { <!-- navigator.app.exitApp(); --> device.exitApp(); } else { history.back(1); } } 

Para aquellos que vinieron aquí porque la aplicación se cierra después de haber estado en el texto centrado-archivado y presionando el backButton: En Android 4.0.3 (ICS) no tiene que anular backButton con phongap API para detener el cierre / bloqueo de la aplicación después de haber centrado un Introduzca el campo de texto y luego presione el botón Atrás. Normalmente esto cierra la aplicación, porque el webkit está creando un tap-highlight con un esquema adicional que no puede ser cambiado con css.

Cuando enfoca la entrada, aparece el teclado. Al presionar la primera vez que el backButton de su teclado desaparezca. Cuando vuelves a hacer clic para volver al historial de navegación, la aplicación se cierra en lugar de saltar a la página visitada anteriormente. Esto se debe a que el resaltado salta de la estructura de navegación. Parece que no está en el DOM. Realmente no entiendo ese comportamiento. Aquí está la solución:

Solo agrega

 input { -webkit-user-modify: read-write-plaintext-only } 

Esto interrumpe el webkit haciendo un tap-highlight y usted todavía permanece en la aplicación y puede volver atrás en History con su (no overriden) backButton.

Disfrutar.

Este es el problema de usar cosas como PhoneGap, construyen aplicaciones de forma que Android no funciona.

El botón Atrás muestra la actividad más reciente de la pila de actividades. Como usted tiene una aplicación completa que se parece a múltiples actividades, es de hecho una sola actividad con superposiciones. Lo que tendrá que hacer, y tener en cuenta que esto no es realmente la forma correcta de hacer las cosas.

Tendrás que anular la funcionalidad del botón de retroceso de forma pragmática para que vuelva a estar en las pilas de jQuery, y una vez que la aplicación plana de Android es lo único que queda, vuelve de ahí también. No sé si PhoneGap le permite tener mucho control sobre el sistema Android, pero de forma predeterminada, el Android OS no funcionará normalmente con su lista jQuery.

Espero que esto proporciona una cierta penetración.

Vine aquí debido al problema con el botón de retroceso dentro de un campo de texto ( input o textarea ) en una aplicación Cordova / PhoneGap que no desencadena el comportamiento normal (en mi caso, no activa mi controlador javascript).

Lamentablemente, la solución anterior utilizando CSS no funciona en Android 2.3.

Y la solución elegida, que reemplaza al evento en Java, no es suficiente para mí porque necesito activar un controlador JS, no volver atrás en la webview. Además, esta solución está reimplementando el comportamiento predeterminado de Cordova, que no es la mejor práctica, ya que pierde otras características incorporadas.

Por lo tanto, lo que hice (y funcionó) fue anular el evento KeyUp, como arriba, pero en lugar de volver a implementarlo, acabo de llamar al manejador en el appVIew (que es la implementación de Cordova).

 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return appView.onKeyUp(keyCode, event); } 
  • Cordova / Phonegap Todas las Solicitudes de Ajax Externas Devuelve 404
  • Detectar si la aplicación de Android se ha instalado en el dispositivo mediante una página web móvil: PHP y JS
  • Forzar la interpretación de porcentaje de transformación CSS3 correcta en Android
  • Copia al portapapeles en jquery / javascript sin flash para ipad / iphone
  • IScroll - Preservar desplazamiento vertical nativo - funciona en iOS, no en Android
  • Cómo abrir mediante programación teclado táctil de Android de acuerdo con el tipo de entrada html en android webview
  • Emitir en footable mientras que agrega datos dinámicos
  • La entrada en los resultados de autocompletar de jQuery se activa al seleccionar del resultado
  • Reproducción de sonido local en la brecha telefónica
  • Phonegap, jQuery Mobile, Android, barra de herramientas no fija después de una entrada de texto
  • Evento de clic de JQuery de un elemento div en li no disparado en Safari móvil
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.