2013-05-14 9 views
1

Android 용 Cordova-2.7.0 사용 다음 JS 스크립트가 있습니다.Phonegap (코르도바) - 안드로이드에서 뒤로 버튼 이벤트 대신 뒤로 버튼이 발생합니다.

뒤로 버튼 기능을 테스트하는 동안 나는 이상한 행동에 직면했습니다. 응용 프로그램의 첫 번째 실행에서

, 나는 BACK 버튼 'BACK 버튼' 이벤트가 발생하고 'onBackButton' 함수가 호출을 누릅니다.

내가 응용 프로그램을 종료하고 응용 프로그램을 다시 실행

, 'onPauseButton' 기능은 백 버튼을 누른 후 대신 'onBackButton' 기능이라고합니다.

자세히 조사한 결과 'navigator.app.exitApp();' (코도바 기능)은 Android 애플리케이션을 완전히 파괴하지 않습니다.

나는 최근에 사용한 앱 목록에서 응용 프로그램을 삭제하고 다시 실행하면, 'BACK 버튼' 이벤트가 트리거되고 나는 BACK 버튼을 누르면 'onBackButton' 함수가 호출됩니다.

그래서 각 응용 프로그램 실행시 '뒤로 버튼' 이벤트를 catch하고 싶습니다.

내가 무엇을 제안합니까? 이 문제를 해결할 수 있는지 모르겠어요

감사합니다, V.H.

initialize: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
    document.addEventListener('backbutton', this.onBackButton, true); 
    document.addEventListener('pause', this.onPauseButton, true); 
}, 

onDeviceReady: function() { 
    console.log("onDeviceReady called"); 
}, 

onPauseButton: function() { 
    console.log("onPauseButton called"); 
}, 

onBackButton: function() {   
    console.log("onBackButton called"); 
    console.log("current view: "+GUIManager.currentView); 

    if(GUIManager.VIEW_LOCALE == GUIManager.currentView){ 
     GUIManager.showMatchListScreen(); 

    } else if(GUIManager.VIEW_MATCHLIST == GUIManager.currentView){ 
     navigator.app.exitApp(); 
    } 
} 

답변

1

. 그러나 코드에 따르면 Cordova 메소드가 아직로드되지 않은 반면 Cordova 메소드는 호출하려고 할 가능성이 있습니다. 매우 도움이 http://docs.phonegap.com/en/2.7.0/cordova_events_events.md.html#Events

+0

:

initialize: function() { document.addEventListener('deviceready', this.onDeviceReady, false); }, onDeviceReady: function() { console.log("onDeviceReady called"); document.addEventListener('backbutton', this.onBackButton, true); document.addEventListener('pause', this.onPauseButton, true); }, onPauseButton: function() { console.log("onPauseButton called"); }, onBackButton: function() { console.log("onBackButton called"); console.log("current view: "+GUIManager.currentView); if(GUIManager.VIEW_LOCALE == GUIManager.currentView){ GUIManager.showMatchListScreen(); } else if(GUIManager.VIEW_MATCHLIST == GUIManager.currentView){ navigator.app.exitApp(); } } 

이벤트에 대한 폰갭의 문서 링크를 참조하시기 바랍니다. 그러나 흥미로운 점은 장치가 'document.addEventListener'호출을 할 준비가 될 필요가 없다는 것입니다. 문서 객체 내의 지정된 이벤트 유형에만 지정된 리스너를 등록합니다. – vaha

관련 문제