0

这个问题很难传达,实际场景将帮助你们理解真正的问题。

在 Android 应用程序中。

我有很多 Jquery Mobile Page 附加到 android Webview。

当我选择一个页面(例如)配置文件时,页面会正确打开,如果我按后退按钮,应用程序将移动到主页,如果我再次选择配置文件并按返回,应用程序会转到登录页面。

如果我选择其他页面并选择配置文件,这不会发生。这个问题不仅与单页有关。在所有页面中我都有同样的问题。有人可以指导我该怎么做吗?

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;
}

在我的网络视图中,

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 view.go 返回第一页。

4

2 回答 2

1

在您的活动中覆盖像这样的后压方法

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

通过他们的 ID 对 URL 进行硬编码并暂时解决了问题。

于 2012-09-20T09:47:52.540 回答