簡體   English   中英

更改方向時如何在片段中保存WebView狀態?

[英]How to save a WebView state in fragments when changing the orientation?

我有一個webview,我需要在更改方向時保存該webview的狀態。 我想在更改方向時加載不同的布局,但我正在使用片段。 如何解決這個問題呢 ?

在包含WebView的fagment上實現這個:

private Bundle webViewBundle;

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

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.my_layout, container, false);
    wv = (WebView) v.findViewById(R.id.webView);

    if (webViewBundle != null)
    {
        wv.restoreState(webViewBundle);
    }
    else
    {
        wv.loadUrl("http://www.mysite.mydomain");
    }

    return v;
}

public void onPause() {
    super.onPause();
    webViewBundle = new Bundle();
    wv.saveState(webViewBundle);
}

並在您的Manifest <activity>標記中添加:

 <activity
        ...
        android:configChanges="orientation|screenSize"
        ... ></activity>

私人WebView wv;

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


public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.webview_layout, container, false);
    wv = v.findViewById(R.id.web_view);

    WebSettings webSettings = wv.getSettings();
    webSettings.setJavaScriptEnabled(true);

    wv.setWebViewClient(new WebViewClient());
    wv.loadUrl("http://example.com/");

    return v;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM