Как сохранить состояние WebView в MainActivity?
Пишу простой браузер. Не могу разобраться с сохранением состояния WebView в MainActivity. При первой загрузке приложения открывается стартовая страница google.com. Предположим, я пишу что-то в поисковой строке. Как сохранить состояние WebView, чтобы текст, написанный в поисковой строке, не пропадал после смены ориентации экрана?
Код MainActivity:
public class MainActivity extends BaseActivity {
@BindView(R.id.webView)
WebView webView;
@Inject
UrlPreferences prefs;
MyWebViewClient webViewClient = new MyWebViewClient();
@Override
protected void onCreate(Bundle savedInstanceState) {
App.INSTANCE.getAppComponent().inject(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initButterKnife();
webView.getSettings().setJavaScriptEnabled(true);
if (savedInstanceState == null) {
webView.loadUrl("https://google.com");
} else {
webView.loadUrl(prefs.getUrl());
}
webView.setWebViewClient(webViewClient);
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
prefs.setUrl(webView.getUrl());
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Можно добавить запрет на перезагрузку данных активности:
<activity ...
android:launchMode="singleInstance"
android:alwaysRetainTaskState="true">
Либо второй вариант - восстанавливать состояние из onSaveInstanceState:
@Override
protected void onSaveInstanceState(Bundle outState) {
webView.saveState(outState);
super.onSaveInstanceState(outState);
}
и в onCreate() восстанавливаем ее:
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
WebView webview = (WebView)findViewById(R.id.webview);
if (savedInstanceState != null)
webview.restoreState(savedInstanceState);
else
webview.loadUrl(URLData)
}