1

phonegap-1.3.0 と android-4.0.3 を使用してアプリを開発しています。以下は私のコードです:

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()

どんな助けでも大歓迎..

4

2 に答える 2

2

私の環境 (PhoneGap 内の Sencha Touch 2、ここでAndreas Sommer の指示を参照してください) でこの問題の解決策を探すとき、次のコードを私の index.html HEAD セクションに追加して修正しました:

<!-- 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>

参考までに、「mainview」コンポーネントは Ext.navigation.View であり、スタックから現在のビューをポップしています。pop() が null を返す場合、ホーム ビューにいます。

これは Gingerbread と ICS では問題なく機能しましたが、Jelly Bean では機能しませんでした。Jelly Bean で動作させるには、PhoneGap の下にある AndroidManifest.xml ファイルのタグから android:targetSdkVersion="17" 属性を削除する必要がありました。

これらはすべて PhoneGap でのみ機能しました。PhoneGap の代わりに Sencha Touch で .apk を生成すると、ハードウェアの戻るボタンがキャプチャされませんでした。

于 2012-12-01T16:15:41.537 に答える
0

問題を調べていただきありがとうございます。以下の行を追加して問題を解決しました

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

onDeviceReady() 関数で。そして、このようにページ間を移動するためにフラグ変数を使用しました。

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

よろしく、ナナシ

于 2012-10-16T06:43:47.640 に答える