Веб-просмотр назад, обновить, переслать? Просто не работает!

#android #user-interface #android-layout #webview #options-menu

#Android #пользовательский интерфейс #android-layout #веб-просмотр #параметры-меню

Вопрос:

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

Обновление работает [я понял это, изменив метод на чтение ‘WebView.reload();’ вместо ‘WebView.refresh();’

Кто-нибудь может помочь с пересылкой и возвратом? Я пробовал ‘forward’, ‘canGoForward’ и ‘goForward’, а также ‘back’, ‘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) amp;amp; 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);
}
  

}

Ответ №1:

Код, которым вы поделились, не включает ту часть, где вы создаете webview и переходите между URL-адресами. Итак, я просто предполагаю, что может происходить.

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

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

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

Комментарии:

1. Спасибо, я только что отремонтировал loadUrl, как рекомендовано, и он отлично работал! Ты замечательный!