onsaveInstanceState永远不会被称为片段

时间:2014-11-04 10:30:16

标签: android android-fragments

随后进行了大量的搜索和谷歌搜索,当用户导航到另一个片段然后使用后退片段返回上一个片段时,我尝试了各种方法来使onsaveState正常工作。

我有两个片段A和B,它们被加载并用于容器xml布局中,该布局由普通的Activity包含。一个单一的活动。

这是我如何将片段添加到片段管理器和我的容器xml

FragmentA about = new FragmentA();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.mainViewContainer, about).addToBackStack(TAG_ABOUT_PAGE);
        ft.commit();

这是FragmentA上的onsaveState

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
//save something
outState.putParcelable(KEY_CENTER_POINT, mlatLong);
Log.d("jjj", "onsaveInsanceState");

}

片段B像这样被调用

  FragmentB fragmentB = new FragmentB();
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.mainViewContainer, fragmentB).addToBackStack(TAG_ABOUT_PAGE);
            ft.commit();

当用户按下后退键时,片段A的整个生命周期被调用,onAttach,oncreate,oncreateView等,片段显示但未保存的值,因为当片段被fragmentB替换时,它没有调用onsaveInstanceState。 / p>

任何想法?

我可以硬编码并创建一个表示我希望存储的值的单例,只是从oncreateView加载它,但这不是理想的,是最后的手段。

由于

0 个答案:

没有答案
相关问题