【问题标题】:onSaveInstanceState and Fragments?onSaveInstanceState 和片段?
【发布时间】:2012-08-03 14:39:32
【问题描述】:

如何获取片段以保存其状态?我已经尝试了所有方法,但没有运气,没有任何效果。

我试过添加:

public void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   myWebView.saveState(outState);
   Log.w("///////", "onSaveInstanceState");

}

但这永远不会被调用。

有什么想法吗?


我现在正在尝试恢复网络视图的状态:

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

     View mainView = (View) inflater.inflate(R.layout.frag_b, container, false);
     myWebView = (WebView) mainView.findViewById(R.id.webviewtest);
     myWebView.setWebViewClient(new MyWebViewClient());
     myWebView.getSettings().setPluginsEnabled(true);
     myWebView.getSettings().setBuiltInZoomControls(false); 
     myWebView.getSettings().setSupportZoom(false);
     myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);   
     myWebView.getSettings().setAllowFileAccess(true); 
     myWebView.getSettings().setDomStorageEnabled(true);
     myWebView.loadUrl("http://www.google.com");   
     myWebView.setId(1);
     myWebView.restoreState(savedInstanceState);
     Log.w("///////", "onCreateView");

    return mainView;
}

但是上面的不起作用,有什么想法吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    你有没有看过这个:Fragment's onSaveInstanceState() is never called

    您需要确保在您的FragmentActivity 中调用super.onSaveInstanceState(Bundle)

    【讨论】:

    • 你的 Fragment 中是否至少调用了 onSaveInstanceState() 方法?
    • 如何取回网络视图的状态?
    • 试试看这个:stackoverflow.com/questions/1002085/… 你需要在你的 Fragment 中调用 restoreState() 方法。
    • 是的,我有:myWebView.restoreState(savedInstanceState);它不起作用。
    • 尝试将 WebView 代码移动到 onActivityCreated()。我没有用 WebView 做很多工作,但我假设你需要等待 Activity 才能对 WebView 做任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多