这是我的代码:
index.html:
...
<script type="text/javascript" charset="utf-8" src="main.js"></script>
</head>
<body onload="init();"></body>
...
main.js:
function onBackPressed(e) {
console.log("onBackPressed()");
var answer = confirm("Do you want to exit?");
console.log(answer);
if (answer) {
navigator.app.exitApp();
}
}
function init() {
...
document.addEventListener("backbutton", onBackPressed, false);
...
}
当我第一次退出应用程序时,一切似乎都没问题。 问题是当我下次启动应用程序时,确认对话框立即返回false并且对话框保持可见。因此,当我点击“确定”时,不会发生任何事情。
这是logcat的输出:
04-11 16:16:26.444: D/PhoneGapLog(18356): onBackPressed()
04-11 16:16:26.444: D/PhoneGapLog(18356): file:///android_asset/www/main.js: Line 49 : onBackPressed()
04-11 16:16:26.444: I/Web Console(18356): onBackPressed() at file:///android_asset/www/main.js:49
04-11 16:16:26.584: D/PhoneGapLog(18356): false
04-11 16:16:26.584: D/PhoneGapLog(18356): file:///android_asset/www/main.js: Line 51 : false
04-11 16:16:26.584: I/Web Console(18356): false at file:///android_asset/www/main.js:51
这是phonegap或android中的错误吗?或者我做错了什么?
我使用Nexus One和android 2.3.6以及phonegap 1.4.1(版本1.5有后退事件的问题)。
答案 0 :(得分:3)
在PhoneGap中,确认是否进行异步回调。请参阅api docs。
由于立即返回,变量 answer 将始终为false。
代码看起来应该更像:
// process the confirmation dialog result
function onConfirm(button) {
alert('You selected button ' + button);
}
// Show a custom confirmation dialog
//
function showConfirm() {
navigator.notification.confirm(
'You are the winner!', // message
onConfirm, // callback to invoke with index of button pressed
'Game Over', // title
'Restart,Exit' // buttonLabels
);
}