我正在使用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
答案 0 :(得分:2)
在我的环境中寻找解决此问题的方法时(PhoneGap中的Sencha Touch 2,请参阅Andreas Sommer的说明here)我通过将以下代码添加到我的index.html HEAD secion来修复:
<!-- 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,那么我们就在主视图中。
这适用于Gingerbread和ICS,但不适用于Jelly Bean。为了让它与Jelly Bean一起使用,我需要从PhoneGap下的AndroidManifest.xml文件中的标记中删除android:targetSdkVersion =“17”属性。
所有这一切只适用于PhoneGap。当我在Sencha Touch下生成.apk而不是PhoneGap时,硬件后退按钮没有被捕获。
答案 1 :(得分:0)
感谢您查看问题。 我通过添加以下行解决了这个问题
document.addEventListener("backButton", backPressed, false);
在onDeviceReady()函数中。并使用标志变量在这样的页面之间导航,
function backPressed() {
alert('backPressed');
if(gAppControl.pageFlag == true)
home();
else
navigator.app.exitApp();
}
此致 Nanashi