PhoneGap + jQueryMobile:Android后退buttonclosures嵌套列表中的应用程序

我正在使用PhoneGap和jQuery Mobile创build一个应用程序。

使用jQuery Mobile我已经创build了一个嵌套列表。

点击进入嵌套列表后,我想返回。 我希望点击我的Android(N1)上的后退button,它会回到一个级别。

但是,而不是closures应用程序而不是回到了一个级别。

使用PhoneGap 1.2.0,jQuery Mobile v1.0rc2,jQuery 1.6.4,Android 2.3.3。

编辑:升级到jQuery Mobile 1.0,没有任何改变

Solutions Collecting From Web of "PhoneGap + jQueryMobile:Android后退buttonclosures嵌套列表中的应用程序"

我有这个相同的问题,我发现如何处理java代码中的后退button。

如果可能的话,这可以返回一步,否则退出应用程序。

@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if(appView.canGoBack()){ appView.goBack(); return true; } } return super.onKeyDown(keyCode, event); } 

也可以在javascript端做到这一点:

 document.addEventListener("backbutton", function() { //Logic// }, false); 

你可以听后退button事件:

 document.addEventListener("backbutton", onBackKeyDown, false); function onBackKeyDown() { // Handle the back button } 

如果当前页面是主页(jQuery Mobile中的$ .mobile.activePage),则从应用程序退出:

navigator.app.exitApp();

另请尝试:

 function onBackKeyDown(e) { e.preventDefault(); if ($.mobile.activePage.attr('id') == 'main') { <!-- navigator.app.exitApp(); --> device.exitApp(); } else { history.back(1); } } 

对于那些来到这里,因为应用程序在关注文本归档后按下backButton后closures:在Android 4.0.3(ICS)中,您不必使用phongap API覆盖backButton,以便在关注之后停止closures/崩溃应用程序input文本字段,然后按后退button。 通常这会closures应用程序,因为webkit创build一个额外的轮廓,不能用css改变的龙头突出显示。

当你把注意力集中在input软键盘上时。 当你第一次按backButton时,你的软键盘消失。 当你再次点击导航历史logging时,应用程序正在closures,而不是跳到之前访问的页面。 这是因为突出显示跳出了导航结构。 它似乎不在DOM中。 我不太了解这种行为。 这是解决scheme:

只需添加

 input { -webkit-user-modify: read-write-plaintext-only } 

这会中断webkit做一个tap-highlight,你仍然留在应用程序中,并可以使用backButton(不覆盖)返回History。

请享用。

这是使用诸如PhoneGap之类的东西的问题,它们以Android的方式构build应用程序。

后退buttonpopup活动堆栈的最新活动。 因为您有一个看起来像多个活动的整个应用程序,实际上它是一个带有重叠的单个活动。 你必须做的,并记住这不是真正的做事的正确方法。

您将不得不重新实现后退button的function,以使其返回到jQuery堆栈中,然后一旦平坦的Android应用程序是唯一剩下的东西,那么也可以从中退出。 我不知道如果PhoneGap允许你有很多Android系统的控制,但默认情况下,Android操作系统不会正常与您的jQuery列表。

希望这提供一些见解。

我来到这里是因为在Cordova / PhoneGap应用程序中的文本字段( inputtextarea )内的后退button的问题,不会触发正常行为(在我的情况下,它不会触发我的JavaScript处理程序)。

不幸的是,使用CSS的上述解决scheme在Android 2.3上不起作用。

而select的解决scheme,它覆盖Java中的事件,是不够的,因为我需要触发一个JS处理程序,而不是在web视图回去。 此外,此解决scheme正在重新实现默认的Cordova行为,这不是最佳实践,因为它会丢失其他内置function。

所以,我所做的(和它的工作)是覆盖KeyUp事件,但是,而不是重新实现,我只是在appVIew(这是Cordova的实现)上调用处理程序。

 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { return appView.onKeyUp(keyCode, event); }