2016-02-11 2 views
0

Я хочу получить глубину WebView's объект в Android. Но я не могу найти, поэтому я разрабатываю, используя onPageStarted и onPageFinished.Как получить глубину WebView в Android?

boolean mIsInProgress = false; 
int depth = 0; 
mWebView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     if(!mIsInProgress) { 
      depth++; 
     } 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     if(mIsInProgress) { 
      mIsInProgress = false; 
     } 
    } 
}); 

И это метод уменьшения глубины при нажатии на кнопку возврата оборудования.

private void moveBack(){ 
    if(!mIsInProgress) { 
     if (mWebView.canGoBack()) { 
      mWebView.goBack(); 
      depth--; 
     } else if (mActivity != null) { 
      mActivity.finish(); 
     } 

     mIsInProgress= true; 
    } 
} 

Во-первых, я думаю, что это действительно хорошо работает. Но onPageStarted и onPageFinished имеет сроков выпуска.

  1. WebView имеет 1 глубина.
  2. Перемещение страницы через любую ссылку.
  3. Назад -> Вызов onPageStarted.
  4. Перемещение страницы по любой ссылке, прежде чем звонить onPageFinished. -> Вызов onPageStarted.
  5. Адрес onPageFinished.

Это не был вызван в onPageFinished между 3 и 4 стадии стадии, так что не может увеличить глубину в 4 стадии. (Но мне нужно mIsInProgress переменная причина onPageStarted иногда называется дважды.)

Как я могу получить глубину WebView точно?

ответ

0

Вы можете использовать WebViewBackForwardList, возвращенный WebView.copyBackForwardList()(doc). В списке перемотки назад getCurrentIndex() возвращает текущую позицию в списке истории, а размер списка - это общая глубина истории.

Смежные вопросы