2012-05-16 15 views
7

Mam WebView, który ładuje strony mediów społecznościowych. Przesłoniłem przycisk Wstecz, aby wywołać metodę goBack w WebView aż do canGoBack() powrotu false. Następnie wywołuje super.onBackPressed(). Problem polega na tym, że Twitter i YouTube używają Javascript w taki sposób, że canGoBack() wraca true, chyba że szybko naciśniesz przycisk Wstecz 4 razy.Android WebView canGoBack zawsze prawdziwy

Próbowałem sprawdzanie oryginalnego adresu URL z aktualnym adresem URL, ale strona ma inny adres, niż ten, który zostanie przekazany w.

Czy ktoś zna sposób na przycisk wstecz nazywają WebView na goBack metody, dopóki nie jesteś na początku, a następnie zadzwoń super.onBackPressed?

Odpowiedz

0

Cóż, nie jest idealny, ale możesz ręcznie śledzić historię nawigacji, używając tablicy (lub tylko liczby całkowitej, która ma zostać zwiększona lub zmniejszona) i wprowadzić aktualny adres URL za każdym razem, gdy się zmieni i wyświetli jej ostatni URL gdy naciśniesz przycisk Wstecz, a jeśli tablica jest pusta (lub liczba całkowita to 0), zadzwonisz pod numer super.onBackPressed().
Aby wykonać kod po zmianie adresu URL, można zastąpić metodę boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) z metody boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) z (link to the documentation).
W ten sposób javascript stron internetowych nie może zakłócać sposobu obsługi przycisku Wstecz.