首页 文章

Phonegap-2.10:硬件后退按钮无法正常工作

提问于
浏览
1

我正在使用phonegap-1.3.0和android-4.0.3开发一个应用程序.Below是我的代码:

function home() {   
document.removeEventListener("backbutton", handleBackButton, false);
document.addEventListener("backbutton", handleBackButtonOnHome, false);
}

function edit() {
document.removeEventListener("backbutton", handleBackButtonOnHome, false);   document.addEventListener("backbutton", handleBackButton, false);
}

function handleBackButton() {
console.log("Back Button Pressed!");
home();
}

function handleBackButtonOnHome() {
console.log("Back Button Pressed in home!");
navigator.app.exitApp();
}

在编辑页面上点击硬件后退按钮会将用户带到主页,当在主页上时,应用程序将按照事件处理程序的指定退出 . 该应用程序在指定的设置(配置)上正常工作 . 最近我升级到cordova-2.1.0,点击编辑页面上的后退按钮退出应用程序而不是将用户带到主页 .

请注意:我已经尝试了我的东西,但似乎没有任何工作,navigator.app.backHistory()history.back()

任何帮助欢迎..

谢谢Nanashi

2 回答

  • 0

    在我的环境中寻找这个问题的解决方案时(PhoneGap中的Sencha Touch 2,请参阅Andreas Sommer的说明here)我通过将以下代码添加到我的index.html HEAD中来修复:

    <!-- handle android hardware back button -->
    <script type="text/javascript" charset="utf-8">
        document.addEventListener("deviceready", function() {
            document.addEventListener("backbutton", function() {
                if (Ext.getCmp('mainview').pop(1) == null) {
                    Ext.Msg.confirm("Exit", "Do you want to Exit?", function(e) {
                        if (e == 'yes') {
                            navigator.app.exitApp();
                        }
                    });
                }
                else {
                    return false;
                }
            }, false);
        }, false);
    </script>
    

    仅供参考,“mainview”组件是一个Ext.navigation.View,我从堆栈中弹出当前视图 . 如果pop()返回null,那么我们在home视图中 .

    这适用于Gingerbread和ICS,但不适用于Jelly Bean . 为了让它与Jelly Bean一起工作,我需要从PhoneGap下的AndroidManifest.xml文件中的标签中删除android:targetSdkVersion =“17”属性 .

    所有这一切只适用于PhoneGap . 当我在Sencha Touch下生成.apk而不是PhoneGap时,硬件后退按钮没有被捕获 .

  • 2

    感谢您查看问题 . 我通过添加以下行解决了这个问题

    document.addEventListener("backButton", backPressed, false);
    

    在onDeviceReady()函数中 . 并使用标志变量在这样的页面之间导航,

    function backPressed() {
    alert('backPressed');   
    if(gAppControl.pageFlag == true)
    home();
    else
    navigator.app.exitApp();        
    }
    

    此致,Nanashi

相关问题