我有两个片段。
在第一个片段中,我有一个用于片段视图的容器静态(LinearLayout)。在这个容器中,我对几个视图进行了膨胀。
我更改为第二个片段,但是当我返回第一个片段时,膨胀的视图消失了。
如何保存容器的状态?有人可以给我一个例子吗?感谢您的帮助和关注
我有两个片段。
在第一个片段中,我有一个用于片段视图的容器静态(LinearLayout)。在这个容器中,我对几个视图进行了膨胀。
我更改为第二个片段,但是当我返回第一个片段时,膨胀的视图消失了。
如何保存容器的状态?有人可以给我一个例子吗?感谢您的帮助和关注
问题在于保存实例。片段保存了属于片段的视图的状态,但膨胀结果的另一个视图消失了。
我不知道如何将状态(片段更改时)保存在容器内,更改多次(动态)
返回时再次调用 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;
}