Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 切换片段时将输入保留在片段中_Android_Android Fragments_Android Lifecycle - Fatal编程技术网

Android 切换片段时将输入保留在片段中

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

我有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多个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作为目标,而不是新的片段;正是我的意思: