防止在Rotate上的FragmentPagerAdapter中重新加载WebView

时间:2014-08-21 12:57:51

标签: android android-fragments webview rotation hashmap

Fragment中的FragmentPagerAdapterWebViews包含HashMap中存储的多个webViews。我在旋转设备时试图阻止它们重新加载。我尝试过几件事,但都没有。这就是我现在正在尝试的但仍然没有快乐。

我的HashMap static也在旋转时被删除。是否会使public class SfnViewerFragment extends Fragment { private WebView webView; private View rootView; private HashMap<Long, WebView> webViews = new HashMap<Long, WebView>(); private static Bundle webViewBundle; @Override public void onPause() { super.onPause(); webViewBundle = new Bundle(); if (webView != null) { webView.saveState(webViewBundle); } } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (webViewBundle != null) { webView.restoreState(webViewBundle); } } 解决这个问题?

最新尝试..旋转后,webViewBundle似乎为空。

相关守则:

android:configChanges="orientation"

我的清单中也有这个,但它仍然无济于事:

{{1}}

2 个答案:

答案 0 :(得分:1)

尝试以下链接中的解决方案 Handling WebView on Rotation

有几种方法。

  1. 在onSaveInstanceState()中执行webview.saveState(savedInstanceState)并在onRestoreInstanceState中恢复。
  2. 手动处理方向更改清理。 在轮换时,layout.xml中的所有视图都将被销毁,然后重新创建。为了避免破坏而不是将webview添加为layout.xml的一部分,应该以编程方式添加webview(通过addView())。这样可以在onConfigurationChanged()中删除webview,并再次添加回onCreate()的新布局。 链接有更好的描述。
  3. PS:您可能已经知道,不建议手动处理屏幕旋转。

答案 1 :(得分:0)

如果您的API为13或更高版本的Android清单编辑代码,则如下所示:

android:configChanges="screenSize|orientation"

for more info please take a look at this also.