Подтвердить что ты не робот

Мой веб-просмотр перезагружается, когда я меняю портрет с пейзажа

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

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

Рон

4b9b3361

Ответ 1

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

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

Здесь docs: http://developer.android.com/guide/topics/resources/runtime-changes.html

Ответ 2

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

android:configChanges="orientation|keyboard|keyboardHidden"

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

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

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

Ответ 3

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

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

Ответ 4

@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);
} 

Добавьте вышеописанный метод в свою деятельность.. и

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

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

Ответ 5

Добавьте это перед компоновкой

@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"

Ответ 6

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

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

Ответ 7

Добавить в действие

android:configChanges="keyboardHidden|orientation"