WebView Back,Refresh,Forward?根本行不通!

Kaz*_*ndo 6 user-interface android webview android-layout options-menu

我已经尝试了一切让我的"前进"和"后退"工作.

刷新工作[我通过将方法更改为'webView.reload();'来解决这个问题.而不是'webView.refresh();'

任何人都可以协助前进和后退吗?我试过'前锋','canGoForward'和'goForward'以及'后退','canGoBack'和'goBack'.没有错误代码,但这些方法实际上都没有做任何事情.

public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu); // Add menu items, second value is the id, use this in the onCreateOptionsMenu
    menu.add(0, 1, 0, "Back");
    menu.add(0, 2, 0, "Refresh");
    menu.add(0, 3, 0, "Forward");
    return true; // End of menu configuration
}
public boolean onOptionsItemSelected(MenuItem item){ // Called when you tap a menu item
    switch (item.getItemId()){
        case 1: //If the ID equals 1, go back
            webView.goBack();
        return true;
        case 2 : //If the ID equals 2, refresh
            webView.reload();
        return true;
        case 3: //If the ID equals 3, go forward
            webView.goForward();
        return true;
        }
    return false;
    }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) { // Enables browsing to previous pages with the hardware back button
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { // Check if the key event was the BACK key and if there's history
        webView.goBack();
        return true;
    }   // If it wasn't the BACK key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
    return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)

}

Tah*_*tar 4

您共享的代码不包括您创建 webview 和在 url 之间导航的部分。所以我只是猜测可能会发生什么。

这似乎webview是您班级的一个实例字段,您已在问题中显示了其部分。是否webView每次您导航到新页面时都会重新创建该内容?也就是说,代码类似于:

webview = new WebView(this);
webview.loadUrl("http://slashdot.org/");
Run Code Online (Sandbox Code Playgroud)

如果这就是正在做的事情,您所需要做的就是创建一次“webView”,然后loadUrl每次需要导航到新网址时调用即可。这样 webview 实例将能够保留历史记录。