保存容器的状态(LinearLayout)

时间:2012-11-27 15:46:06

标签: android android-fragments containers layout-inflater savestate

我有两个片段。

在第一个片段中,我有一个容器静态(LinearLayout)到片段视图。在这个容器中,我做了几个观点的膨胀。

我改为第二个片段,但当我回到第一个片段时,膨胀的视图消失了。

如何保存容器的状态?有人可以举个例子吗? 谢谢你的帮助和关注

enter image description here

2 个答案:

答案 0 :(得分:0)

问题出在saveinstance上。片段保存属于片段的视图的状态,但是通胀结果的另一个视图消失。

我不知道如何保存容器内的状态(当更改片段时),多次改变(dinamic)

答案 1 :(得分:0)

返回时再次调用

onCreateView,并重新创建片段。 一种解决方案是将片段状态保存在onSaveInstanceState中并在onCreateView中重新加载:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    ..
    if (savedInstanceState != null) {
       // reload state
    }
    ..
}

public void onSaveInstanceState (Bundle outState) {
    // save dynamic state in outState
}

编辑:

如果您想保留实际视图,我发现这可行:

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

    if (mLayout == null) {
      // this is the first time onCreateView has been called
      mLayout = inflater.inflate(..);
    } else {
      // remove previous parent
      ViewParent parent = mLayout.getParent();
      if (parent != null)
        ((ViewGroup) parent).removeView(mLayout);
    }
    return mLayout;
}