Intereting Posts
Отображение миниатюры для ссылки в WhatsApp || Og: метатег изображения не работает Хорошие примеры не-игровых приложений Marmalade? Как вы масштабируете и набиваете растровое растение, используемое в качестве фона? Android: отключить выбор текста в веб-просмотре. Преобразование массива int в Bitmap на Android Библиотека поддержки Android 23.4.0: android.support.v7.widget.TintContextWrapper не может быть перенесена в Activity Ссылка на Apple Wallet или Android Pay из веб-приложения MVC Как изменить HomeButton Hilight Color при нажатии Адаптация адаптера для перерабатывающего оборудования Firebase RuntimeException из Google Analytics для Android «отправка сообщения обработчику по мертвой теме» Как установить цвет фона для каждой строки в списке? Интеграция времени выполнения Skype в существующем приложении Android Android: приложение несовместимо с Huawei? Создать приложения для Android с помощью Xcode? Как сделать пользовательскую ширину заполнения тоста?

OnPageFinished не стрелять правильно при рендеринге веб-страницы

По какой-то причине onPageFinished увольняется, прежде чем WebView завершит загрузку – я не могу понять, почему …

public class WebViewClientTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final WebView webview = (WebView) findViewById(R.id.webview); webview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(webview, url); webview.scrollTo(0, 500); } }); webview.loadUrl("http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=lala"); } } 

Хорошо, хорошо, похоже, это не исправлено. Я думаю, что при загрузке страницы происходит гоночное состояние, но не может получить воспроизводимое поведение.

Я сохраняю HTML-содержимое веб-страницы в базе данных SQLite для просмотра в автономном режиме. Я перезагружаю содержимое в WebView с помощью:

 webView.loadDataWithBaseURL("fake://fake.com/", htmlBody, "text/html", "utf-8", null); 

Похоже, что иногда, когда WebView загружает, он корректно запускает метод WebViewClient.onPageFinished (), а в других случаях – нет. Иногда он срабатывает до того, как страница закончила загрузку, создавая contentHeight 0 и игнорируя любые вызовы scrollTo.

У кого-нибудь есть опыт?

Solutions Collecting From Web of "OnPageFinished не стрелять правильно при рендеринге веб-страницы"

У меня был проект с кодом, который должен был запускаться только после того, как веб-просмотр отобразил его содержимое, и, как и вы, onPageFinished () не работал. Он выстрелил слишком быстро, прежде чем веб-просмотр действительно отобразил страницу.

Вместо этого мне пришлось использовать «PictureListener», который запускается, когда веб-просмотр фактически обновляет экран.

Вы используете его так:

 mWebView.setPictureListener(new MyPictureListener()); //... and then later on.... class MyPictureListener implements PictureListener { @Override public void onNewPicture(WebView view, Picture arg1) { // put code here that needs to run when the page has finished loading and // a new "picture" is on the webview. } } 

У меня была такая же проблема, чтобы отклонить мой progressdialog при рендеринге моей веб-страницы. Я решил с onPageStarted. Надеюсь, это решение поможет вам.

  @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); progressBar.dismiss(); } @Override public void onPageStarted(WebView view, String url, android.graphics.Bitmap favicon) { if (!progressBar.isShowing()) { progressBar.show(); } }; 

Хм, хорошо, если я создаю свой собственный частный класс, он работает …

 private class ViewStoryWebViewClient extends WebViewClient { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(webView, url); webView.scrollTo(0, 50); } } 

Я получаю то же самое с loadDataWithBaseURL() . Иногда содержимое не отображается, а contentHeight равно 0. Странно, что щелчок в любом месте веб-представления приведет к отображению содержимого. Кроме того, если вы вызываете zoomIn();zoomOut(); В onPageFinished() появится страница.

EDIT: Проблема с моим кодом заключается в том, что содержимое HTML содержало фиктивное имя window.location = в событии onload, и это приводило к тому, что исходное содержимое не загружалось в произвольное время. Извините, я не думаю, что это связано с тем, что вы видите.