Содержимое Android Webview не должно быть потеряно при изменении ориентации, но графический интерфейс должен быть обновлен должным образом - PullRequest
5 голосов
/ 19 марта 2012

Я пытался сохранить загруженную страницу и значения javascript в WebView при изменении ориентации и приостановке действия. Сначала я попытался переопределить configChanges, но это привело к тому, что мой графический интерфейс не обновляется должным образом (у меня есть движок, который меняет положение при изменении ориентации). После этого я попытался поместить WebView во фрагмент и вызвал setRetainInstance (true); Но это не сохраняет содержание WebView нетронутым. Я пытался сохранить тот же объект живым, не создавая его заново, но Android не позволяет повторно использовать представления таким образом.

У меня вопрос: есть ли способ сохранить содержимое веб-просмотра, не перезагружая его при каждом изменении ориентации, в то время как другие компоненты графического интерфейса обновляются должным образом.

Надеюсь, мой вопрос достаточно ясен, но я с удовольствием уточню, есть ли какие-то неясности.

РЕДАКТИРОВАТЬ: я уже пытался добавить Android: configChanges = "клавиатура скрытая | ориентация" в моем манифесте, что я имел в виду под "переопределение конфигурации"

Кажется, что единственное решение - обновить все переменные javascript снова при изменении ориентации. Поскольку я еще не запускал огромные порции обновлений через javascript, я не могу дать подробное представление о скорости и ресурсах этой операции.

Ответы [ 4 ]

4 голосов
/ 01 октября 2012

Я знаю, что вы уже пробовали

 android:configChanges="keyboardHidden|orientation"

но попробуйте это вместо

android:configChanges="keyboardHidden|orientation|screenSize"

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

Я нашел этот ответ здесь https://stackoverflow.com/a/11903546/655822

0 голосов
/ 19 марта 2012

Попробуйте это указать

android:configChanges="orientation|keyboardHidden"></activity>

это в вашем классе

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
0 голосов
/ 19 марта 2012

Добавьте строку ниже в файле манифеста Android.

android:configChanges="keyboardHidden|orientation"

0 голосов
/ 19 марта 2012

Добавьте это в свой файл androidmanifest ..... активность

android:name=".YourActivityHere" 
android:configChanges="keyboardHidden|orientation"
...