WebView Назад, Обновить, Вперед? Просто не работает!

Я пробовал все, чтобы заставить работать «вперед» и «назад».

Обновление работает [я понял это, изменив метод на чтение '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);
}

}


person Kazuko Ando    schedule 02.06.2011    source источник


Ответы (1)


Код, которым вы поделились, не включает часть, в которой вы создаете веб-просмотр и перемещаетесь между URL-адресами. Поэтому я просто делаю предположения о том, что может произойти.

Кажется, что webview - это поле экземпляра вашего класса, часть которого вы показали в вопросе. Может ли быть так, что webView создается заново каждый раз, когда вы переходите на новую страницу? То есть код примерно такой:

webview = new WebView(this);
webview.loadUrl("http://slashdot.org/");

Если это то, что делается, все, что вам нужно, это создать «webView» один раз и просто вызывать loadUrl каждый раз, когда вам нужно перейти к новому URL-адресу. Таким образом, экземпляр веб-просмотра сможет сохранить историю.

person Tahir Akhtar    schedule 02.06.2011
comment
Спасибо, я только что восстановил loadUrl в соответствии с рекомендациями, и это сработало отлично! Вы замечательный! - person Kazuko Ando; 02.06.2011