Android 切换片段时将输入保留在片段中
我有4个标签,上面有一个碎片。当我从片段2切换到任何其他片段时,我希望保持片段状态,它有用于将项目上载到服务器的输入字段 我尝试过使用addToBackStack,但最终所有片段都能保持片段2的状态 这就是我想要的:Android 切换片段时将输入保留在片段中,android,android-fragments,android-lifecycle,Android,Android Fragments,Android Lifecycle,我有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
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多个inputfields,我不想在每次EditText更改时都将所有信息存储在SQLite中
如果我使用addToBackStack,那么我就可以从家里去支持编辑等等。我不想那样!哎呀 添加到backbackback不会存储信息。为此,您必须使用RetainInstanceState 重写方法以设置RetainInstance,如图所示:
@Override
public void setRetainInstance(boolean retain) {
super.setRetainInstance(true);
}
然后在片段的onAttach方法中,放入以下内容:
getRetainInstance();
可能不适合您的需要,但如果可以,请仅实例化一次片段:
private MyFragment mMyFragment;
private MyOtherFragment mMyOtherFragment;
在某个地方初始化它们并重用它们,而无需再次实例化它们尝试阅读FragmentStatePagerAdapter以及如何保存和恢复状态。当我从Fragment2切换时,定义切换。。。如果只是隐藏/显示,状态应保持。。。添加/删除将重新创建片段…我使用带有replace和commit的事务。我使用了answer.Override方法来设置RetainInstance的目的是什么?这很有效。在我的活动中,我使用片段f=新片段;然后在我的标签切换中,我使用f作为目标,而不是新的片段;正是我的意思: