WebView предлагает goBack() и goForward() для реализации типичного поведения кнопки "назад", которое может быть привязано к кнопкам, элементам панели действий или что-то еще:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.back:
if (webView.canGoBack()) {
webView.goBack();
}
break;
case R.id.fwd:
if (webView.canGoForward()) {
webView.goForward();
}
break;
case R.id.reload:
webView.reload();
break;
default:
return(super.onOptionsItemSelected(item));
}
return(true);
}
WebView также имеет canGoBack() и canGoForward(), чтобы рассказать вам, являются ли эти жизнеспособные опции заданными текущей историей навигации в WebView, показанной выше, как защита вокруг вызовов goBack() и goForward().
В теории canGoBack() и canGoForward() могут использоваться для включения или отключения кнопок, элементов панели действий или чего-то еще. Это даст вам типичный пользовательский интерфейс браузера, где кнопки "Назад" и "Вперед" доступны только пользователю, если они будут иметь реальный эффект.
Что не очевидно, когда мы должны звонить canGoBack() и canGoForward() и включать/отключать эти кнопки. Должно ли быть:
-
onPageStarted()в пользовательскомWebViewClient? -
doUpdateVisitedHistory()в пользовательскомWebViewClient? - в каком-то другом обратном вызове?
- какая-то комбинация из них?
- каждую секунду или так чисто по таймеру, потому что у нас нет надежного обратного вызова для определения того, когда они должны обновляться?