我有4个标签,上面有一个片段。当我从片段2切换到任何其他片段时,我想保持片段状态(它具有用于将项目上传到服务器的输入字段)。
我尝试过使用 addToBackStack ,但最终会有所有片段让它能够保持片段2的状态。
这就是我想要的:
Fragment 1 = home
Fragment 2 = upload
Fragment 3 = edit
Fragment 4 = support
2 -> 1 = keep 2's state
2 -> 3 = keep 2's state
1 -> 2 = resume 2's state
3 -> 2 = resume 2's state
1 -> 3 = keep 2's state
3 -> 1 = keep 2's state
etc..
我上传了超过30个输入字段,我不希望每次任何EditText文本更改时都将所有信息存储在SQLite中。
如果我使用addToBackStack,那么我可以从家里去支持编辑等等。我不想要那个!的Yelp!
答案 0 :(得分:1)
可能不适合您的需求,但如果可以的话,只需要实例化一次片段:
private MyFragment mMyFragment;
private MyOtherFragment mMyOtherFragment;
在某处初始化它们并重新使用它们而不再实例化它们
答案 1 :(得分:-1)
添加到backStack不会存储信息。因为你必须使用RetainInstanceState。
将方法重写为setRetainInstance,如下所示:
@Override
public void setRetainInstance(boolean retain) {
super.setRetainInstance(true);
}
然后在onAttach片段方法中,把它放在:
getRetainInstance();