2013-09-25 7 views
11

ओवरराइड करता है मैंने का उपयोग करके Android app बनाया है। मैंने html मार्कअप और jQuery का उपयोग करके अपने ऐप में menu सुविधा लागू की है जो डिवाइस के menubutton के साथ इंटरैक्ट करने पर टॉगल करता है। लेकिन मैं मूल ऐप की तरह व्यवहार करने के लिए निम्नलिखित आवश्यकता को प्राप्त करने के लिए नहीं समझ पाया।जावास्क्रिप्ट बैकबटन घटना श्रोता एंड्रॉइड डिवाइस बैक बटन

आवश्यकता

menu पर दबाव डिवाइस की backbutton छुपाना चाहिए अगर menuvisible है। यदि menubackbutton को सामान्य रूप से कार्य नहीं करना चाहिए, तो यह exitapp होना चाहिए या back history पर जाना चाहिए।

यह मेरा कोड

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); 

वास्तविक समस्या

अगर मैं backbutton के लिए एक eventlistener संलग्न है डिवाइस के Back Button है विकलांग, यह सामान्य रूप में काम करता है नहीं करता है।

मेरा प्रश्न

डिवाइस के वापस बटन की सवारी से अधिक document.addEventListener('backbutton', function(){}); है है? मैं इससे छुटकारा कैसे पाऊं?

इस पर एंड्रॉयड 4.1.2 डिवाइस

उत्तर

10

हो रहा है एक बार जब आप वापस बटन अधिरोहित है श्रोता का उपयोग कर, यह देशी कार्यक्षमताओं प्रदर्शन नहीं करता। आपको बाहर निकलने के व्यवहार को भी लागू करना होगा।

अपने अधिभावी विधि में, निम्न

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(); 
    } 
}); 

आशा है कि मदद करता है का उपयोग करें।

+0

क्या मैं 'जावा' में कुछ बदल सकता हूं या यह पूरी तरह से असंभव है? – Lekhnath

+0

मुझे जावा में सटीक संभावना से अवगत नहीं है, लेकिन यह प्रोग्रामिंग का मूल नियम है, एक बार जब आप ओवरराइड हो जाते हैं तो आपको अपने स्वयं के फ़ंक्शन में पूर्ण कार्यक्षमता को लागू करने की आवश्यकता होती है। – SHANK

+0

यदि मुझे मैन्युअल रूप से ऐसा करने की ज़रूरत है, तो 'इतिहास' में कुछ भी नहीं है और यदि कोई है तो मैं वापस 'इतिहास' पर कैसे जा सकता हूं? कृपया सहायता कीजिए! – Lekhnath

0

आपके प्रश्न का उत्तर करने के लिए:

document.addEventListener ('backbutton', समारोह() {}) है; डिवाइस के बैक बटन पर सवारी करने पर? मैं इससे छुटकारा कैसे पाऊं?

आप बाद के पृष्ठों में बैक बटन की मूल कार्यक्षमता का उपयोग जारी रखने के लिए पृष्ठ रीडायरेक्ट पर ईवेंट श्रोता को भी हटा सकते हैं। इवेंट श्रोता को निम्नानुसार निकालने के लिए कोड:

document.removeEventListener("backbutton", onBackButton, false); जहां बैकबटन बटन बैक बटन ईवेंट से जुड़ा हुआ कार्य है।

संबंधित मुद्दे