0

我有两个片段。

在第一个片段中,我有一个用于片段视图的容器静态(LinearLayout)。在这个容器中,我对几个视图进行了膨胀。

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

如何保存容器的状态?有人可以给我一个例子吗?感谢您的帮助和关注

在此处输入图像描述

4

2 回答 2

0

问题在于保存实例。片段保存了属于片段的视图的状态,但膨胀结果的另一个视图消失了。

我不知道如何将状态(片段更改时)保存在容器内,更改多次(动态)

于 2012-11-27T15:52:50.170 回答
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;
}
于 2012-11-27T15:55:19.743 回答