2016-04-21 1 views
0

J'ai googlé, mais tous les articles utiles décrivent tous comment gérer le bouton de retour dans NavigationView, mais j'utilise simplement la vue commune comme ci-dessous. Je suis faire des changements sur l'application existante, donc je ne peux pas changer l'architecture de base. Donc, je me demande comment gérer le bouton de retour?Comment gérer le bouton de retour dans l'application tactile sencha sans NavigationView?

Je sais ci-dessous façon peut capturer l'événement de bouton retour. (J'ai ajouté la méthode ci-dessous pour app.js)

if (Ext.os.is('Android')) { 
    document.addEventListener("backbutton", Ext.bind(onBackKeyDown, this), false); 

    function onBackKeyDown(eve) { 

     eve.preventDefault(); 
     //do something 
     alert('back button pressed'); 
     history.back(); 

    } 
} 

Mais que puis-je faire dans la méthode onBackKeyDown? Depuis cet événement sera déclenché lorsque je clique sur le bouton de retour, peu importe quelle page je reste. Donc je ne peux pas aller à la page précédente comme Ext.Viewport.animateActiveItem ('xxxx') puisque je ne connais pas la page actuelle je reste.

Si je peux obtenir le nom de la page en cours, je peux le gérer comme ci-dessous.

if(currentpage=='xxx') 
      Ext.Viewport.animateActiveItem('profile', { 
       type : 'slide', 
       direction:'left' 
      }); 
+0

Au lieu de cette approche, avez-vous envisagé d'utiliser routes? Si chacun de vos composants a un itinéraire différent, le navigateur s'occupera automatiquement du bouton de retour. – JChap

+0

Il devrait être assez facile de passer à navigationview (la navigationview est un conteneur normal avec une disposition de carte et quelques méthodes pour pop/push vues), une fois que vous avez la navview vous pouvez appeler la méthode pop et vous avez terminé. –

+0

Vous pouvez utiliser l'événement deactivate pour écrire le xtype de la vue dans une variable globale. De là, vous pouvez animerActiveItem – Dinkheller

Répondre

0

Utilisez ce code:

document.addEventListener("deviceready", onDeviceReady, false); 
function onDeviceReady() {if (navigator.userAgent.match("Android")) 
{  document.addEventListener("backbutton", onBackKeyDown, true); } 

} 

function onBackKeyDown(e) { 
    if (window.location.hash === "#splashviewRoute") {  
     navigator.app.exitApp(); 
    } 
    else { 
     window.history.back(); 
    } 
}