2013-09-25 5 views
11

Ho creato Android app utilizzando cordova 2.6.0. Ho implementato una funzione menu nella mia app utilizzando i markup html e jQuery che abilita l'interazione con il dispositivo menubutton. Ma non riuscivo a capire per raggiungere il seguente requisito, a comportarmi come un'app nativa.Il listener di eventi backbutton Javascript sovrascrive il pulsante back del dispositivo Android

Requisito

Il menu dovrebbe nascondere premendo il dispositivo di backbutton se il menu è visible. Se lo menu non è visibile, lo backbutton dovrebbe ora funzionare normalmente, ovvero deve essere exit il app o passare allo back history.

Questo è il mio codice

document.addEventListener('deviceready', function(){ 

document.addEventListener('menubutton', function(){ 
//Toggle Menu 
//Which is working fine 
}); 

document.addEventListener('backbutton', function(){ 
if(menu is visible) { 
    //Hide the menu 
    //This is also working fine 
return false; 
} 

//BUT the default action of backbutton has gone. It cannot exit the app , neither it brings to back history. 

//return true; 
//I have also tried to return boolean true , but facing the same problem. 
}); 

}, false); 

Il vero problema

Se ho attaccato un eventlistener per backbutton del dispositivo Back Button è disattivata, non funziona come normale.

La mia domanda è

È document.addEventListener('backbutton', function(){}); corso in sella il pulsante Indietro del dispositivo? Come liberarsene?

questo accade su Android 4.1.2 dispositivo

risposta

10

Dopo aver sovrascritto il pulsante indietro con l'ascoltatore, non esegue le funzionalità native. Devi implementare anche il comportamento di uscita.

nel metodo predominante, utilizzare il seguente

document.addEventListener('backbutton', function(){ 
    if(menu is visible) { 
     //Hide the menu 
     //This is also working fine 
    return false; 
    } 
    else //nothing is visible, exit the app 
    { 
    navigator.app.exitApp(); 
    } 
}); 

Speranza che aiuta.

+0

Posso cambiare qualcosa in 'java' o è completamente' impossibile'? – Lekhnath

+0

Non sono a conoscenza dell'esatta possibilità di java, ma questa è la regola di base della programmazione, una volta che hai scavalcato devi implementare la funzionalità completa nella tua funzione. – SHANK

+0

Se ho bisogno di farlo manualmente, come potrei 'uscire' l'app se non c'è nulla in' history' e andare a 'back history' se ce n'è uno? per favore aiuto! – Lekhnath

0

Per rispondere alla tua domanda:

Is document.addEventListener ('BackButton', function() {}); oltre a guidare il pulsante posteriore del dispositivo? Come liberarsene?

È inoltre possibile rimuovere il listener di eventi sul reindirizzamento della pagina per continuare a utilizzare la funzionalità nativa del pulsante Indietro nelle pagine successive. Codice per rimuovere listener di eventi nel modo seguente:

document.removeEventListener("backbutton", onBackButton, false); dove onBackButton è la funzione associata all'evento del pulsante Indietro.