2011-12-14 55 views
56

我试图将数据保存在Fragment的onSaveInstanceState()中,但该方法从未被调用过。片段的onSaveInstanceState()永远不会被调用

有人可以帮忙吗?

public class MyFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ScrollView content = (ScrollView) inflater.inflate(R.layout.content, container, false); 
     // More stuff 
     return content; 
    } 

    @Override 
    public void onSaveInstanceState(Bundle icicle) { 
     // NEVER CALLED 
     super.onSaveInstanceState(icicle); 
     //More stuff 
    } 

} 
+0

你使用的是操作栏sherlock?我只是检查一下,以确保我有最新的支持包,并意识到我正在使用操作栏sherlock。我更新到最新的ABS,但我仍然有问题。不知道ABS是否是罪魁祸首? – James 2012-01-05 23:05:39

+1

我只是用正常的支持库和ActionBarSherlock来试用Mark Murphy的EU4You(https://github.com/commonsguy/cw-android/tree/master/Fragments/EU4You_6)。它调用onSaveInstanceState,并在两种情况下按照预期将该包传递给onActivityCreated。所以,仍然需要确定这个原因。 – James 2012-01-06 00:23:07

回答

67

我终于弄清楚了这个问题,至少在我的情况下。我在我的FragmentActivity中重写了onSaveInstanceState,但没有调用super.onSaveInstanceState(Bundle outState)。一旦我加入,Fragment.onSaveInstanceState(Bundle outState)正常工作。

-5

尝试在onCreate(Bundle savedInstanceState)中调用setRetainInstance(true)

+0

无法正常工作:(。我将使用SharedPreferences ...无论如何 – jul 2011-12-14 11:55:27

+1

谢谢你什么时候期待`onSaveInstanceState`被调用?也许你只是没有触发它。 – Felix 2011-12-14 12:25:19

+0

我希望它离开在返回时保存一些数据的活动是否正确? – jul 2011-12-14 12:43:51

6

要检查的一件事是确保包含该片段的活动不会阻止通过在AndroidManifest.xml中包含android:configChanges标志来重新启动。

4

在某些情况下,你可能会发现它有助于使用片段参数代替savedInstanceStateFurther explanation

相关问题