2012-05-16 17 views
7

Tengo un WebView que está cargando páginas de redes sociales. He reemplazado el botón Atrás para llamar al método goBack en WebView hasta que canGoBack() devuelva false. Luego llama al super.onBackPressed(). El problema es que Twitter y YouTube usan Javascript de tal manera que canGoBack() devuelve true a menos que toque el botón Atrás 4 veces muy rápido.Android WebView canGoBack siempre verdadero

He intentado comprobar la URL original con la URL actual, pero la página tiene una URL diferente a la que se pasa en.

¿Alguien sabe una manera de tener el botón de retroceso llamar a la vista Web de goBack método hasta que esté al principio, luego llame al super.onBackPressed?

Respuesta

0

Bueno, no es ideal, pero puede rastrear el historial de navegación manualmente usando una matriz (o simplemente un número entero para aumentar y disminuir) e insertar la url actual cada vez que cambia y extraer la última url de ella cuando presiona el botón Atrás, y si la matriz está vacía (o el número entero es 0), llama al super.onBackPressed().
Para ejecutar el código cuando cambia la URL, puede anular el método boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) de WebViewClient (link to the documentation).
De esta forma, el javascript de las páginas web no puede interferir con la forma en que maneja el botón Atrás.

Cuestiones relacionadas