1

これは私のコードです:

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 を返し、ダイアログが表示されたままになることです。したがって、「OK」をクリックしても何も起こりません。

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 のバグですか? それとも私は何か間違ったことをしていますか?

私は Android 2.3.6 と phonegap 1.4.1 で Nexus One を使用しています (バージョン 1.5 では backbutton イベントに問題があります)。

4

1 に答える 1

3

PhoneGapでは、confirmは非同期コールバックを実行します。APIドキュメントを参照してください。

変数の答えは、すぐに返されるため、常に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
    );
}
于 2012-04-11T18:54:43.817 に答える