2012-10-11 82 views
1

我使用PhoneGap的-1.3.0和开发应用程序的Android 4.0.3.Below是我的代码:PhoneGap的2.10:硬件后退按钮不能正常工作

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

感谢您查看问题。 我通过添加下面一行

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

在onDeviceReady()函数解决了这个问题。并使用了标志变量这样的页面之间进行导航,

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

问候, Nanashi

2

当寻找里面的PhoneGap在我的环境中解决这个问题(煎茶触摸2,看安德烈亚斯·索默的说明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> 

FYI中,“MAINVIEW”组分为其中我突然离开从堆栈中的当前视图的Ext.navigation.View。如果pop()返回null,那么我们在主视图中。

这对姜饼和ICS的罚款,但没有与果冻豆工作。为了使它与Jelly Bean一起工​​作,我需要从PhoneGap下的AndroidManifest.xml文件中的标签中删除android:targetSdkVersion =“17”属性。

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