Мое веб-представление перезагружается, когда я меняю портрет - PullRequest
17 голосов
/ 12 апреля 2011

У меня есть простой WebView, который запускает веб-приложение на Android.Проблема заключается в том, что когда я поворачиваю телефон, чтобы изменить его на альбомную, webview перезагружается и возвращается к началу.

Как я могу предотвратить это действие?

Рон

Ответы [ 7 ]

49 голосов
/ 10 августа 2012

Начиная с Android 3.2 (уровень API 13), «размер экрана» также изменяется, когда устройство переключается между книжной и альбомной ориентацией.Таким образом, если вы хотите предотвратить перезапуск среды выполнения из-за изменения ориентации при разработке для API уровня 13 или выше (как заявлено атрибутами minSdkVersion и targetSdkVersion), вы должны включить значение «screenSize» в дополнение к значению «ориентации».То есть вы должны декаляр

<activity android:configChanges="orientation|screenSize">

Вот документы: http://developer.android.com/guide/topics/resources/runtime-changes.html

7 голосов
/ 31 мая 2011

Эту проблему можно решить, переопределив onSaveInstanceState(Bundle outState) в своей активности и позвонив по номеру saveState из веб-обзора:

Это сообщение в блоге может помочь вам.

6 голосов
/ 17 мая 2011

Добавьте следующее в ваш AndroidManifest:

android:configChanges="orientation|keyboard|keyboardHidden"

Так это должно выглядеть примерно так:

<activity android:name=".MyActivity" 
          android:label="@string/app_name" 
          android:configChanges="orientation|keyboard|keyboardHidden">

Очевидно, что если вашему WebView нужна поддержка клавиатуры, не включайте параметры клавиатуры.

3 голосов
/ 29 октября 2013

Добавьте это до создания

@Override
protected void onSaveInstanceState(Bundle outState) {
webview.saveState(outState);
}

Напишите на создание таким образом. положить окончательный

public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutname);
if (savedInstanceState != null)
{
((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState);
}
else
{
webview.loadUrl("http://www.playbuzz.org/");
}

}

В Androidmanifest вставка под действием

android:configChanges="keyboardHidden|orientation"
2 голосов
/ 05 июля 2012
@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);
} 

Добавьте вышеуказанный метод в вашу деятельность .. и

андроид: configChanges = "клавиатура | keyboardHidden | ориентация"

в вашем файле манифеста

1 голос
/ 29 октября 2013

Добавить в активность

android:configChanges="keyboardHidden|orientation"
1 голос
/ 17 февраля 2012

Проблема с вышеупомянутым решением состоит в том, что он делает экран белым в течение некоторого времени, прежде чем веб-просмотр перерисовывает содержимое.

Попробуйте использовать android: configChanges = "direction | keyboardHidden" внутри вашего файла AndroidManifest.xml дляактивность, которая отображает веб-просмотр.Это должно помочь.

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