Le remplacement du comportement Backback Back d'Android ne fonctionne que sur la première page avec PhoneGap

J'utilise PhoneGap 1.5.0, jQuery 1.7.1 et jQuery mobile 1.0.1 et essayons de remplacer le bouton arrière dans Android comme indiqué ici ou ici .

document.addEventListener("deviceready", onDeviceReady, false); // PhoneGap loaded function onDeviceReady() { console.log("PhoneGap Ready!"); // waiting for button document.addEventListener("backbutton", handleBackButton, false); } // handle the back button function handleBackButton() { console.log("Back Button Pressed!"); navigator.app.exitApp(); } 

Mais cela ne fonctionne que sur la première page de mon application. Après avoir changé sur une page différente, le bouton arrière ne fait rien du tout. L'application se compose d'une tabview comme ceci:

  • La commande de l'application vide VS2013 Cordova a échoué avec l'erreur de code de sortie 8
  • Erreur de génération Gradle après BSOD (java.lang.NullPointerException (aucun message d'erreur)
  • Suppression de fragments d'une activité
  • Couleur de fond ondulé Android
  • Comment implémenter la bibliothèque DrawerArrowToggle depuis Android appcompat v7 21
  • Pourquoi utiliser un messager plutôt que de passer la référence à un gestionnaire?
  •  <body> <div data-role="page" id="pilotTab"> <div data-role="header"> <h1>Pilot</h1> </div> <div data-role="content" id="pilotContent"> content be here ;) </div> <div data-role="footer" data-position="fixed"> <div data-role="navbar"> <ul> <li><a href="pilotTab.html" data-transition="none">Lotse</a> </li> <li><a href="bookingTab.html" data-transition="none">Verkehr</a> </li> <li><a href="mainListTab.html" data-transition="none">B&ouml;rt</a> </li> </ul> </div> <!-- /navbar --> </div> <!-- /footer --> </div> 

    Est-ce une erreur stupide ou est-ce qu'il y a quelque chose de spécial que je dois considérer pour que cela fonctionne correctement? Merci d'avance.

  • Émission de ressources.openRawResource () Android
  • Android Studio 2.2 Aperçu 1 Problèmes de rendu
  • Comment extraire le nom de fichier de URI renvoyé de Intent.ACTION_GET_CONTENT?
  • Obtenir des préférences dans AppWidget Provider
  • Android multitouch: ACTION_UP n'est pas toujours appelé?
  • Coordonnées Android onTouchEvent Skip around
  • 3 Solutions collect form web for “Le remplacement du comportement Backback Back d'Android ne fonctionne que sur la première page avec PhoneGap”

    J'ai parcouru le nouveau code source Phonegap et j'ai effectué les modifications suivantes pour que le backbutton fonctionne.

    Code de test Html

     <script type="text/javascript"> $("#home").click(function(){ $.mobile.changePage("home.html"); }); document.addEventListener("deviceready", onDeviceReady, false); document.addEventListener("backbutton", handleBackButton, false); function onDeviceReady() { console.log("PhoneGap Ready!"); } function handleBackButton() { console.log("Back Button Pressed!"); navigator.app.exitApp(); } </script> 

    Placez le code suivant dans le bloc else de document.addEventListener dans cordova-1.5.0.js après la ligne-no 507

     if (e === 'backbutton') { var exec = require('cordova/exec') exec(null, null, "App", "overrideBackbutton", [true]); } 

    Mettez le code suivant dans fireDocumentEvent méthode de définition cordova-1.5.0.js dans cordova-1.5.0.js après ligne-n ° 592

     if(type == "backbutton"){ var e = document.createEvent('Events'); e.initEvent(type); if (data) { for (var i in data) { e[i] = data[i]; } } document.dispatchEvent(e); return; } 

    J'ai mis l'ensemble cordova-1.5.0.js dans ce style avec le code mis à jour https://gist.github.com/2020325

    Bien qu'il fonctionne pour moi, mais il peut encore nécessiter des changements dans tous les scénarios possibles.

    modifier

    Mettez le code suivant dans fireDocumentEvent méthode de définition cordova-1.5.0.js dans cordova-1.5.0.js après ligne-n ° 592

     if(type == "backbutton" || type == "menubutton" || type == "searchbutton"){ var e = document.createEvent('Events'); e.initEvent(type); if (data) { for (var i in data) { e[i] = data[i]; } } document.dispatchEvent(e); return; } 

    Bryce Curtis suggère sur cette page de simplement changer la ligne:

    channel.onNativeReady.subscribe(_self.boot);

    à :

    channel.onNativeReady.subscribeOnce(_self.boot);

    À la fin du fichier.

    Cela semble faire l'affaire pour moi et réparé le bouton arrière ET le menu et le bouton de recherche!

    @dhaval: J'ai effectué les modifications suivantes dans cordova-1.5.0.js dans Android.

    Les pages où je n'ai pas manipulé le bouton arrière fonctionnent bien, mais l'endroit où je manipule le bouton Précédent ne fonctionne pas.

    Il n'est même pas capable de choisir la fonction

     function handleBackButton() { console.log("Back Button Pressed!"); navigator.app.exitApp(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.