Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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 Viewpager - Fatal编程技术网

Android 销毁碎片的正确方法

Android 销毁碎片的正确方法,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,所以我看了类似的问题也没用。我有一个片段承载了一个ViewPager,它是一个报告向导。当用户完成向导时,它会将他们重定向到一个新的片段,以确认报告已完成。我想完全销毁ViewPager片段,这样,如果我的用户尝试进行其他操作,他们就可以重新开始。在移出ViewPager片段并进入完成的片段后,我尝试弹出后堆栈,但我得到了递归错误。有没有合适的方法来实现这一点?不要做任何事情,甚至不要将其添加到后堆栈中。一旦不再存在引用,旧的片段将被垃圾收集,而且听起来你并不真的需要将此片段放在后堆栈中。但问题

所以我看了类似的问题也没用。我有一个片段承载了一个ViewPager,它是一个报告向导。当用户完成向导时,它会将他们重定向到一个新的片段,以确认报告已完成。我想完全销毁ViewPager片段,这样,如果我的用户尝试进行其他操作,他们就可以重新开始。在移出ViewPager片段并进入完成的片段后,我尝试弹出后堆栈,但我得到了递归错误。有没有合适的方法来实现这一点?

不要做任何事情,甚至不要将其添加到后堆栈中。一旦不再存在引用,旧的片段将被垃圾收集,而且听起来你并不真的需要将此片段放在后堆栈中。但问题是,如果用户开始填写报告,转到我应用程序的其他部分,然后再回来,我不想失去这一点,但将片段添加到后堆栈是实现这一点的错误方法。后堆栈用于构建带有片段的导航层次结构,而不是保存片段的实例状态。如果要永久保存数据,请将其保存在SharedReferences中。如果你不需要它永久性的保存,我只需要将Expandle中的所有内容保存在onSaveInstanceState中。这样做并不能保证数据会存在很长时间,但如果用户足够快地返回片段,它应该可以工作。