Мой веб-просмотр перезагружается, когда я меняю портрет с пейзажа
У меня есть простой WebView
, который запускает веб-приложение на Android. Проблема заключается в том, когда я поворачиваю телефон, чтобы изменить его, чтобы ландшафт перезагружался WebView
и возвращается к началу.
Как я могу предотвратить это действие?
Рон
Ответы
Ответ 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"