2011-01-03 11 views
5

Tengo una vista web en la que estoy navegando. Lo he implementado, retrocede y sigue adelante. Mi problema es que cuando regreso a la vista web después de visitar otra actividad, el historial se pierde, es decir, la vista web comienza desde la primera url.Restaurar el historial y la página actual al reanudar la vista web

¿Cómo puedo codificarlo para que después de llamar a finalizar en la vista web para cambiar a otra actividad al volver a la vista web, se restaure WebBackForwardList y me lleven a la página donde estaba cuando salí de la página web?

He intentado reemplazar onSaveInstanceState y onRestoreInstanceState usando webview.save/restoreState(bundle) pero sin éxito.

He logrado volver a la última página guardando la última url en las preferencias, pero no he podido restaurar todo el historial.

Respuesta

2

¿Está reutilizando la vista web?

el Javadoc para la restauración() dice:

Este método debe ser llamado a restaurar el estado de la vista Web antes de usar el objeto. Si se llama a después de que el WebView ha tenido una oportunidad de para construir el estado (cargar páginas, crear una lista de atrás/adelante, etc.) puede haber efectos secundarios indeseables.

por lo que la regeneración del objeto webview puede ayudar.

otras vías para la investigación:

  • WebView.restore() llama list.addHistoryItem (punto) sin borrar la lista, por lo que si usted tiene una web View que está recibiendo reutilizados, puede ayudar a llame a webView.clearHistory() primero antes de la restauración().

  • Esto SO answer implica que hay un mensaje que puede enviar a la lista de historial para agregar elementos.

Buena suerte, y por favor publique su progreso.

--larry

+0

He intentado utilizar restore, pero sin suerte. Creo que esto puede deberse a un error en la lógica de mi programa. Como resultado, he reescrito por completo la interfaz de usuario de mi programa. Anteriormente elegí iniciar la actividad de la vista web desde mi menú de opciones usando startactivityforresult. Terminé la vista web justo antes de devolver el resultado del token. Justo antes de terminar, guardaría la última URL a través de webview.getURL() en mis preferencias compartidas y volvería a abrir la url para reiniciar la actividad. Este método solo volvería a cargar la última página visitada y no el historial completo. – qubz

+0

Con mi nuevo diseño, he implementado tabview y, por lo tanto, puedo conservar todo el historial a través de pestañas de conmutación (siempre que el usuario no presione el botón Atrás para llamar a Destroy). Para el propósito de mi diseño actual, no necesito implementar la solución del historial de restauración. Si lo necesito, volveré a este hilo. Gracias por sus pensamientos, larham1, marcaré esta pregunta como respondida. – qubz

+0

Creo que la respuesta de SO vinculada se refiere al iOS WebView, no a Android. – Raslanove

Cuestiones relacionadas