1

Android用のCordova-2.7.0を使用すると、次のJSスクリプトがあります。

戻るボタンの機能をテストしているときに、奇妙な動作に直面しました。

アプリケーションの最初の実行時に、戻るボタンを押すと「backbutton」イベントがトリガーされ、「onBackButton」関数が呼び出されます。

アプリケーションを終了して再度アプリケーションを実行すると、戻るボタンを押した後、 「onBackButton」関数の代わりに「 onPauseButton」関数が呼び出されます。

詳細な調査の結果、「navigator.app.exitApp();」ということがわかりました。(cordova 関数) は、Android アプリケーションを完全に破壊しません。

最近のアプリのリストからアプリケーションを削除して再度実行すると、 「戻るボタン」イベントがトリガーされ、戻るボタンを押すと「onBackButton」関数が呼び出されます。

したがって、アプリケーションの実行ごとに「戻るボタン」イベントをキャッチしたいと考えています。

あなたは私に何をするように提案しますか?

ありがとう、VH

initialize: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
    document.addEventListener('backbutton', this.onBackButton, true);
    document.addEventListener('pause', this.onPauseButton, true);
},

onDeviceReady: function() {
    console.log("onDeviceReady called");
},

onPauseButton: function() {
    console.log("onPauseButton called");
},

onBackButton: function() {        
    console.log("onBackButton called");
    console.log("current view: "+GUIManager.currentView);

    if(GUIManager.VIEW_LOCALE == GUIManager.currentView ){
        GUIManager.showMatchListScreen();

    } else if(GUIManager.VIEW_MATCHLIST == GUIManager.currentView){ 
        navigator.app.exitApp();
    }
} 
4

1 に答える 1

1

それがあなたの問題を解決するかどうかはわかりません。しかし、あなたのコードによれば、Cordova がまだロードされていないにもかかわらず、いくつかの Cordova メソッドを呼び出そうとする可能性があります。

initialize: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},

onDeviceReady: function() {
    console.log("onDeviceReady called");
    document.addEventListener('backbutton', this.onBackButton, true);
    document.addEventListener('pause', this.onPauseButton, true);
},

onPauseButton: function() {
    console.log("onPauseButton called");
},

onBackButton: function() {        
    console.log("onBackButton called");
    console.log("current view: "+GUIManager.currentView);

    if(GUIManager.VIEW_LOCALE == GUIManager.currentView ){
        GUIManager.showMatchListScreen();

    } else if(GUIManager.VIEW_MATCHLIST == GUIManager.currentView){ 
        navigator.app.exitApp();
    }
}

イベントに関する phonegap doc リンクを参照してください: http://docs.phonegap.com/en/2.7.0/cordova_events_events.md.html#Events

于 2013-05-14T08:11:16.487 に答える