У меня проблема с сохранением текущей позиции прокрутки содержимого, загруженного в элемент управления Android WebView во время изменений ориентации. Проблема в настоящее время существуют только в Android 2.1 и Android 2.1 Update 1Проблема с сохранением позиции прокрутки WebView при изменении ориентации в Android 2.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 Update 1, это не только прокручивает назад к 0,0, но и изменяет масштаб, чтобы соответствовать ширине страницы (аналогично браузера Обзор режима, введенного в 2.1)
Кто-нибудь знает о обходной путь или имеет представление о том, что может вызвать такое поведение?
Вы пытались сравнить источник WebView между двумя версиями, посмотреть, что изменилось? Могу дать понять, что происходит. –
Я попытался сравнить источники. Довольно немного изменений между 1.6 и 2.0 (включая добавление режима обзора). Если вы действительно не знаете внутренних аспектов работы WebView, очень сложно выяснить, что именно вызвало это изменение в поведении. Что еще более расстраивает, так это то, что я даже не могу отлаживать источник, который у меня есть, потому что у меня нет точной версии источника, которая соответствует тому, что работает эмулятор или устройство. – StefanK
Это можно использовать для изменения ориентации, но не для того, чтобы пользователь оставил действие и вернулся позже. Кажется, позиция неправильно хранится в Bundle - или значение игнорируется. – ge0rg