我正在使用PhoneGap和jQuery Mobile创建一个应用程序。
使用jQuery Mobile我创建了一个嵌套列表。
点击进入嵌套列表后,我想回去。我希望点击Android设备上的后退按钮(Nokia N1),它会返回一个级别。
但是Android会关闭应用程序,而不是回到一个级别。
我正在使用PhoneGap 1.2.0,jQuery Mobile v1.0rc2,jQuery 1.6.4和Android 2.3.3(Gingerbread)。
我也升级到jQuery Mobile 1.0,没有任何变化。
答案 0 :(得分:11)
您可以收听后退按钮事件:
document.addEventListener("backbutton", onBackKeyDown, false);
function onBackKeyDown() {
// Handle the back button
}
如果当前页面是主页(jQuery Mobile中的$.mobile.activePage
),请退出应用程序:
navigator.app.exitApp();
答案 1 :(得分:8)
我遇到了同样的问题。我发现了如何处理Java代码中的后退按钮。
如果可能,这将退回一步,否则退出应用程序。
@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);
答案 2 :(得分:2)
还可以尝试:
function onBackKeyDown(e) {
e.preventDefault();
if ($.mobile.activePage.attr('id') == 'main') {
<!-- navigator.app.exitApp(); -->
device.exitApp();
}
else {
history.back(1);
}
}
答案 3 :(得分:2)
对于那些来到这里的人,因为应用程序在关注文本字段并按下backButton后关闭:
在Android 4.0.3(ICS)中,您不必使用PhoneGap API覆盖backButton,以便在聚焦输入文本字段然后按后退按钮后停止关闭/崩溃应用程序。通常这会关闭应用程序,因为WebKit正在创建一个带有附加轮廓的点按高亮显示,无法使用CSS更改。
当您对焦输入时,软键盘会出现。当您第一次按下backButton时,您的软键盘会消失。当您再次单击以返回导航历史记录时,应用程序正在关闭,而不是跳转到之前访问过的页面。这是因为突出显示跳出了导航结构。好像它不在DOM中。我真的不明白这种行为。这是解决方案:
添加
input {
-webkit-user-modify: read-write-plaintext-only
}
这会中断webkit进行点击突出显示,你仍然可以留在应用程序中,并可以使用你的(不是覆盖)backButton返回历史记录。
答案 4 :(得分:1)
我来到这里是因为Cordova / PhoneGap应用程序中的文本字段(input
或textarea
)内的后退按钮问题不会触发正常行为(在我的情况下,它不会触发我的JavaScript处理程序。)
不幸的是,使用CSS的上述解决方案在Android 2.3上无效。
所选择的解决方案覆盖了Java中的事件,对我来说还不够,因为我需要触发一个JavaScript处理程序,而不是回到webview中。此外,此解决方案正在重新实现默认的Cordova行为,这不是最佳做法,因为它会丢失其他内置功能。</ p>
所以,我所做的(并且它起作用)覆盖了KeyUp事件,如上所述,但我没有重新实现它,而是在appVIew上调用处理程序(这是Cordova的实现)。
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return appView.onKeyUp(keyCode, event);
}
答案 5 :(得分:0)
这是使用PhoneGap之类的问题。他们以Android不起作用的方式构建应用程序。
后退按钮会弹出活动堆栈的最新活动。由于您有一个看起来像多个活动的整个应用程序,它实际上是一个带有叠加层的活动。你将要做的事情,并牢记这一点,这不是真正的做事方式。
你必须实际地覆盖后退按钮的功能才能让它回到jQuery堆栈中,然后一旦平面Android应用程序是唯一剩下的东西,那么也可以从那里回来。我不知道PhoneGap是否允许你对Android系统有那么多的控制权,但默认情况下,Android操作系统不能正常使用你的jQuery列表。
我希望这能提供一些见解。