Проблема: Если веб-страница не загружается, отображается диалоговое окно. Но при нажатии кнопки «Повторить» в диалоговом окне обратные вызовы onPageStarted, onPageFinished и onReceivedError не вызываются.
В некоторых сообщениях в Интернете говорилось, что что эти обратные вызовы не будут вызываться, если URL-адрес не изменится. Обходные пути, которые я пробовал:
Изменение URL-адреса путем добавления метки времени и случайной строки в качестве аргументов.
Использование webView. loadUrl(webView.url) вместо webView.reload().
Очистка кеша перед перезагрузкой с помощью webView.clearCache(true) .
Но ни один из способов не сработал. Как заставить эти обратные вызовы вызываться для перезагрузки страницы?
Я создаю приложение для Android с помощью WebView. Вот выполненные шаги: [list] [*]Показать индикатор выполнения при запуске [*]Загрузить мою веб-страницу [*]Если страница загружается успешно, скройте индикатор выполнения и отобразите веб-просмотр. [*]Если по какой-либо причине загрузка страницы не удалась, будет отображен AlertDialog с кнопками «Выход» и «Повторить». li> [/list] Вот моя собственная реализация WebViewClient: [code]import android.app.Activity import android.app.AlertDialog import android.content.Intent import android.graphics.Bitmap import android.view.View import android.webkit.WebResourceError import android.webkit.WebResourceRequest import android.webkit.WebView import android.webkit.WebViewClient import android.widget.ImageView import android.widget.ProgressBar
class MyWebViewClient( private val activity: Activity, private val logoView: ImageView, private val webView: WebView, private val progressBar: ProgressBar, private val headers: Map, private val bounds: Array ) : WebViewClient() { private var success: Boolean = true
webView.webViewClient = MyWebViewClient(this, logoView, webView, progressBar, headers, bounds) webView.webChromeClient = MyWebChromeClient(this) webView.loadUrl(BuildConfig.SERVER_URL, headers) [/code] [b]Проблема:[/b] Если веб-страница не загружается, отображается диалоговое окно. Но при нажатии кнопки «Повторить» в диалоговом окне обратные вызовы onPageStarted, onPageFinished и onReceivedError не вызываются. В некоторых сообщениях в Интернете говорилось, что что эти обратные вызовы не будут вызываться, если URL-адрес не изменится. Обходные пути, которые я пробовал: [list] Изменение URL-адреса путем добавления метки времени и случайной строки в качестве аргументов. [*]Использование webView. loadUrl(webView.url) вместо webView.reload(). [*]Очистка кеша перед перезагрузкой с помощью webView.clearCache(true) . [/list] Но ни один из способов не сработал. Как заставить эти обратные вызовы вызываться для перезагрузки страницы?