Проблема сохранения позиции прокрутки WebView во время изменения ориентации в Android 2.1 - PullRequest
1 голос
/ 11 февраля 2010

У меня проблема с сохранением текущей позиции прокрутки содержимого, загруженного в элемент управления Android WebView во время изменения ориентации. В настоящее время проблема существует только в Android 2.1 и Android 2.1, обновление 1

Код, который я использую, основан на приложении браузера по умолчанию и выглядит следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  mWebView = new WebView(this);
  setContentView(mWebView);
  mWebView.setWebViewClient(mWebViewClient);

  if (savedInstanceState != null)
  {
    final WebBackForwardList list = mWebView.restoreState(savedInstanceState);
    if (list == null)
      return;

    if (savedInstanceState.containsKey("currentPicture"))
    {
       final File f = new File(savedInstanceState.getString("currentPicture"));
       mWebView.restorePicture(savedInstanceState, f);
       f.delete();
    }
  }else
    mWebView.loadUrl("http://slashdot.org/");
 }

 @Override
 protected void onSaveInstanceState(Bundle outState)
 {
   final WebBackForwardList list = mWebView.saveState(outState);
   File mThumbnailDir = getDir("thumbnails", 0);
   if (list != null)
   {
     final File f = new File(mThumbnailDir, mWebView.hashCode() + "_pic.save");
     if (mWebView.savePicture(outState, f))
        outState.putString("currentPicture", f.getPath());
   }
 }

Этот код работает в Android 1.5, 1.6 и 2.0.1. В Android 2.1 тот же код восстанавливает позицию за доли секунды, но затем страница перезагружается и прокручивается до позиции 0,0.

В Android 2.1, обновление 1, он не только прокручивает обратно до 0,0, но также изменяет масштаб изображения в соответствии с шириной страницы (аналогично режиму обзора браузера, представленному в 2.1)

Кто-нибудь знает об обходном пути или знает, что может вызвать такое поведение?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2012

Просто загрузите WebViewState в onRestoreInstanceState.

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    myWebView.restoreState(savedInstanceState);
}
0 голосов
/ 07 февраля 2011

Изменение ориентации с альбомной на портретную или наоборот, запускает новое действие. Следовательно вы открыты как обновленная деятельность. Поместите код в свой AndroidManifest.xml и перезагрузите приложение.

 "activity android:name=".Main
 android:configChanges="orientation"

во вкладке активности. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...