2013-07-17 66 views
0

当我旋转屏幕的网页重新加载,但没有我原来的标题。Webview方向改变webview丢失标题

我恢复使用web视图状态:

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    if (savedInstanceState == null) { 
     // Restore the state of the WebView 
     // webView.getRefreshableView().restoreState(savedInstanceState); 
     webView.loadUrl("my_url"); 
    } else { 
     webView.restoreState(savedInstanceState); 
    } 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    webView.saveState(outState); 
} 

任何想法上的解决方案?我真的想恢复状态,因为它包含了所有的网络历史记录,但是当页面重新加载时我需要标题!

+0

尝试'的onResume装载头()' –

+0

@RohanKandwal你这是什么意思,装载头在onResume?据我所见,你必须在webview.onLoad(url,headers)中指定标题 – serenskye

+0

你可以做的是将你的标题保存在'saveInstanceState'中,并在'onResume'中恢复标题 –

回答

1

我固定它使用此解决方案: http://www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-screen-orientation-change/

现在doen'st重新加载页面,只需重新呈现这样头,其中包括,网络历史记录也完好无损。

建议here

我修改了它的片段,片段这里工作:

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.web_fragment, null); 
    //webContainer =() view.findViewById(R.id.web_container); 
    initUI(view); 
    setupWebView(); 
    return view; 
} 

protected void initUI(View view) 
{ 
    // Retrieve UI elements 
    webViewPlaceholder = ((FrameLayout)view.findViewById(R.id.webViewPlaceholder)); 
    // Initialize the WebView if necessary 
    if (webView == null) 
    { 
     // Create the webview 
     webView = new JSWebView(getActivity()); 
     webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 

     // Load the URLs inside the WebView, not in the external web browser 
     webView.setWebViewClient(new WebViewClient()); 

     // Load a page 
     webView.loadUrl("http://someinitialurl.com"); 
    } 

    // Attach the WebView to its placeholder 
    webViewPlaceholder.addView(webView); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    if (webView != null) 
    { 
     // Remove the WebView from the old placeholder 
     webViewPlaceholder.removeView(webView); 
    } 

    super.onConfigurationChanged(newConfig); 

    // Reinitialize the UI 
    initUI(getView()); 
}