2013-09-25 38 views
11

Tôi đã tạo Android app sử dụng cordova 2.6.0. Tôi đã triển khai tính năng menu trong ứng dụng của mình bằng cách sử dụng html đánh dấu và jQuery chuyển đổi khi tương tác với thiết bị menubutton. Nhưng tôi không thể tìm ra để đạt được yêu cầu sau đây, để cư xử như một ứng dụng bản địa.Trình nghe sự kiện backbutton Javascript ghi đè nút quay lại thiết bị Android

Yêu cầu

Các menu nên ẩn trên bức xúc của thiết bị backbutton nếu menuvisible. Nếu số menu không hiển thị, thì backbutton giờ đây sẽ hoạt động bình thường, tức là phải exit số app hoặc truy cập back history.

Đây là mã của tôi

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

Vấn đề thực tế

Nếu tôi kèm theo một eventlistener cho backbutton của thiết bị Back Button bị vô hiệu hóa, nó không hoạt động như bình thường.

Câu hỏi của tôi là

document.addEventListener('backbutton', function(){}); qua cưỡi nút quay lại của thiết bị? Làm thế nào để thoát khỏi nó?

này đang xảy ra trên Android 4.1.2 Device

Trả lời

10

Một khi bạn đã ghi đè nút quay lại sử dụng người nghe, nó không thực hiện các chức năng bản địa. Bạn cũng phải thực hiện hành vi thoát.

Trong phương pháp trọng của bạn, sử dụng sau đây

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

Hy vọng rằng sẽ giúp.

+0

Tôi có thể thay đổi thứ gì đó trong 'java' hoặc nó hoàn toàn là 'không thể'? – Lekhnath

+0

Tôi không nhận thức được khả năng chính xác trong java, nhưng đó là quy tắc cơ bản của lập trình, một khi bạn đã ghi đè, bạn cần triển khai chức năng hoàn chỉnh trong chức năng của riêng bạn. – SHANK

+0

Nếu tôi cần thực hiện thủ công, Làm cách nào tôi có thể thoát khỏi ứng dụng nếu không có gì trong 'history' và đi tới' back history' nếu có? Hãy giúp tôi! – Lekhnath

0

Để trả lời câu hỏi của bạn:

là document.addEventListener ('backbutton', function() {}); vượt qua nút quay lại của thiết bị? Làm thế nào để thoát khỏi nó?

Bạn cũng có thể xóa trình xử lý sự kiện trên chuyển hướng trang để tiếp tục sử dụng chức năng gốc của nút quay lại trong các trang tiếp theo. Mã để xóa trình xử lý sự kiện như sau:

document.removeEventListener("backbutton", onBackButton, false); trong đó onBackButton là chức năng được liên kết với sự kiện nút quay lại.

Các vấn đề liên quan