【问题标题】:Phonegap (Cordova) - Back button triggers pause event instead of backbutton event in AndroidPhonegap (Cordova) - 后退按钮触发暂停事件而不是 Android 中的后退按钮事件
【发布时间】:2013-05-14 07:01:31
【问题描述】:

在 Android 上使用 Cordova-2.7.0 我有以下 JS 脚本。

在测试后退按钮功能时,我遇到了一个奇怪的行为。

在应用程序第一次运行时,当我按下后退按钮时,触发 'backbutton' 事件并调用 'onBackButton' 函数。

当我退出应用程序并再次运行应用程序时,在按下返回按钮后,会调用 'onPauseButton' 函数而不是 'onBackButton' 函数。

经过详细研究,我意识到'navigator.app.exitApp();'(即cordova函数)并没有完全破坏Android应用程序。

如果我从最近的应用程序列表中删除应用程序并再次运行它,'backbutton' 事件会被触发,当我按下返回时会调用 'onBackButton' 函数-按钮。

所以,我想在应用程序的每次运行中捕获 'backbutton' 事件。

你建议我做什么?

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

【问题讨论】:

    标签: android cordova cordova-2.0.0


    【解决方案1】:

    不知道能不能解决你的问题。但是根据您的代码,您可能会尝试调用一些 Cordova 方法,而 Cordova 尚未加载。

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

    有关事件请查看 phonegap 文档链接:http://docs.phonegap.com/en/2.7.0/cordova_events_events.md.html#Events

    【讨论】:

    • 这很有帮助。但有趣的是,设备不需要准备好进行“document.addEventListener”调用。它仅将给定的侦听器注册到文档对象中的给定事件类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2014-05-24
    相关资源
    最近更新 更多