保存屏幕旋转时的 WebView 状态

heg*_*cre 5 android webview

我正在制作自己的浏览器,我需要帮助。我正在努力挽救它的状态。我尝试了以下方法,但不是我正在寻找的解决方案。

我试过这个:

<activity android:name=".About"
    android:configChanges="orientation|keyboard|screenSize" />
Run Code Online (Sandbox Code Playgroud)

但问题是工具栏没有调整大小,因此标题很小,工具栏高度最小(如果我从横向开始并旋转到纵向),标题很大,高度更大(如果我从纵向开始并旋转到纵向)旋转至横向)。

我尝试过的其他事情是

@Override
public void onCreate(final Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.blah);
   if (savedInstanceState != null)
      ((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState.getBundle("webViewState");
}

@Override
protected void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      Bundle bundle = new Bundle();
      webView.saveState(bundle);
      outState.putBundle("webViewState", bundle);
}
Run Code Online (Sandbox Code Playgroud)

但WebView未正确保存。

如何在旋转时保存 webview 状态并且不会出现工具栏大小问题?

如果我处理配置更改并尝试调整工具栏和文本的大小,也许会更好?

Epi*_*rce 5

您应该将 Webview 状态保存到其自己的 Bundle 中。另外,别忘了打电话super.onSaveInstanceState(outState)

@Override
public void onCreate(final Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.blah);
   if (savedInstanceState != null)
      ((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState.getBundle("webViewState"));
}

@Override
protected void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      Bundle bundle = new Bundle();
      webView.saveState(bundle);
      outState.putBundle("webViewState", bundle);
}
Run Code Online (Sandbox Code Playgroud)