0

問題を伝えるのは少し難しいです。実際のシナリオは、皆さんが実際の問題を理解するのに役立ちます。

Android アプリケーションで。

私は多くの Jquery Mobile Page を Android Webview に追加しています。

1 つの Page (Eg) Profile を選択すると、ページが適切に開き、[戻る] ボタンを押すとアプリケーションがメイン ページに移動し、もう一度プロファイルを選択して [戻る] を押すと、アプリケーションはログイン ページに移動します。

他のページを選択してプロファイルを選択すると、これは発生しません。この問題は、単一ページだけの問題ではありません。すべてのページで私は同じ問題を抱えています。誰かが私に何をすべきか教えてもらえますか?

Key Press イベントのソース コード。ここにコードを入力します。

   @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && webview.isEnabled()
            && !this.onLogin) {

        webview.loadUrl("javascript:handleDeviceBack()");
        return true;
    } else if (keyCode == KeyEvent.KEYCODE_BACK && this.onLogin) {
        moveTaskToBack(true);
    }
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        webview.loadUrl("javascript:handleDeviceHome()");
        return true;
    }
    return false;
}

私のWebビューでは、

enter code here
 handleDeviceBack = function(status) {
mHealth.util.logMessage('On device Back');
var historyBack = {
    "home" : "page",
    "loginPage" : "page",
    "welcomeMsg" : "page"
};
var moduleIndex = {
    "assessNotFound" : "../../home/view/home.html",
    "showActivity" : "../../home/view/home.html",
    "showMessage" : "../../home/view/home.html",
    "show_tracker" : "../../home/view/home.html",
    "settingsPage" : "../../home/view/home.html"
};
var graphPages = {
    "singlehealthdatapage" : "page",
    "multiplehealthdatapage" : "page"
};
var otherShortcuts = {
    "show_tracker_view" : "../../trackers/view/showtracker.html",
    "detailMessage" : "../../messages/view/showmessage.html",
    "alfrescoDIV" : "../../messages/view/showmessage.html"
};
// var exitAppCriteria={ "home" : "page","loginPage" : "page","welcomeMsg" :
// "page"};

if($('.ui-page-active').attr('id')=="condition_index")
    {
        $.mobile.changePage("../../home/view/history.html");
    }
else if (historyBack[$('.ui-page-active').attr('id')]
        || $('body').children().is('#tandcPage')) {
    Android.finishActivity();
} else if (moduleIndex[$('.ui-page-active').attr('id')]) {
    Android.highlightHome();
    $('.ui-alert-wallpaper').detach();
    $.mobile.changePage(moduleIndex[$('.ui-page-active').attr('id')]);

} else if (graphPages[$('.ui-page-active').attr('id')]) {
    Android.showTab();
    Android.pageHistory();
} else if (otherShortcuts[$('.ui-page-active').attr('id')]) {
    $.mobile.changePage(otherShortcuts[$('.ui-page-active').attr('id')]);
} else {

    $('.dw').detach();
    $('.dwo').detach();
    $('.dw').detach();
    $('.ui-alert-wallpaper').detach();
    Android.showTab();
    Android.pageHistory();
}

};

問題は Android.pageHistory(); にあることがわかりました。

enter code here
    public void pageHistory() {
    this.activity.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            WebContainerActivity.webview.goBack();

        }
    });

}

最初は正常に実行されていますが、関数が Web ビューを繰り返し呼び出した場合は、最初のページに戻ります。

4

2 に答える 2

1

あなたのアクティビティでは、このようなバックプレスされたメソッドをオーバーライドします

  @Override
    public void onBackPressed() {
      webview.loadUrl(sameurl);
        }
于 2012-09-17T14:08:28.987 に答える
0

URL を ID でハードコーディングし、問題を一時的に解決しました。

于 2012-09-20T09:47:52.540 に答える