旋转后完全保留WebView片段

时间:2013-07-15 21:03:07

标签: android webview

我目前正在将WebView放置在这样的片段中:

@Override
public void onCreate(Bundle savedInstanceState)
{
      super.onCreate(savedInstanceState);
      setRetainInstance(true);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
        mContext = container.getContext();
        LayoutInflater mInflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        LinearLayout view = (LinearLayout) mInflater.inflate(R.layout.post_view_layout, container,false);           
        view.setBackgroundColor(Color.WHITE);
        _viewCache = view;
        _post_WebView = (WebView) view.findViewById(R.id.post_webview);
        setupWebView(_post_WebView); //This method sets up the webview (javascript mode etc.) and set the url to load
        return view;
}

现在每当我旋转时,包含此片段的活动都会被重新创建(我不能使用清单的configChanges="orientation"属性,因为我正在使用ABS) 由于setRetainInstance(true)片段,它的布局和所有变量都得到了很好的保留,但每当我尝试滚动或点击保留的WebView时,我得到一个BadTokenException(可能是因为它的原始活动用于它上下文在轮换期间被破坏了。

我可以通过在旋转后使用新的活动上下文重新创建WebView来解决这个问题,但由于webview显示输入表单,因此在轮换后重新创建它可能会让用户感到乏味。 (我已经尝试使用WebView的saveStaterestoreState方法保存状态,但无济于事

有没有办法在不生成BadTokenException的情况下将WebView恢复或保留在完整的预旋转状态,就像添加configChanges="orientation"属性时一样?

0 个答案:

没有答案