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

Android 添加带有标记的片段是否会导致它们在其父级被销毁时不会被销毁?

Android 添加带有标记的片段是否会导致它们在其父级被销毁时不会被销毁?,android,android-fragments,Android,Android Fragments,我有一个android应用程序,它使用一个活动和多个片段动态构建ui 基本活动中有一个简单的线性布局,但没有任何内容(BaseActivity) 我添加了一个片段,其中只包含一个抽屉布局,其中包含一个操作栏、一个框架布局和一个导航栏(BaseFragment) 为此,我添加了两个片段中的一个,一个以列表的形式显示所有子片段(SerialFragment),另一个以向导样式显示(WizardFragment) 其中每一个都可以添加一个(对于向导)或多个(对于列表)片段(QuestionFragme

我有一个android应用程序,它使用一个活动和多个片段动态构建ui

基本活动中有一个简单的线性布局,但没有任何内容(BaseActivity)

我添加了一个片段,其中只包含一个抽屉布局,其中包含一个操作栏、一个框架布局和一个导航栏(BaseFragment)

为此,我添加了两个片段中的一个,一个以列表的形式显示所有子片段(SerialFragment),另一个以向导样式显示(WizardFragment)

其中每一个都可以添加一个(对于向导)或多个(对于列表)片段(QuestionFragment)

当我离开BaseActivity时,会调用BaseFragment的onDestroy(),但不会调用任何子片段的onDestroy()

我像这样添加子片段

FragmentTransaction trans = parent.getFragmentManager().beginTransaction();
set_default_animation(trans); //this just adds a custom animation
trans.replace(R.id.wizard_content, QuestionFragment.NewInstance(),question_id.toString()); //in case of a wizard
trans.add(R.id.list_content,QuestionFragment.NewInstance(), question_id.toString());//in case of a list
trans.commit();
BaseFragment(被销毁)与其他的唯一区别在于,在其他的片段中,我向它们添加了一个标记(section_id或question_id),这样我就可以使用findFragmentByTag检索它们

然而,当用户离开活动时,只调用BaseFragment的onDestroy()

这是因为,这个片段是我唯一没有使用标记添加的片段吗

注意,我没有使用支持片段管理器(普通的),所以我使用标记来定位我想要的片段,因为不支持片段管理器不包含getFragments()

还要注意,我没有在上述任何片段上将retaininstance标志设置为true

我可以通过移除标记和添加对父对象上片段的引用来测试上述内容,但这意味着需要进行大量重构,如果这不是问题的话,我希望避免进行重构


提前感谢您提供的任何帮助

在重构所有内容之后,似乎标签不是问题所在(尽管我仍然删除了它们)

对我来说,修复它的是使用getChildFragmentManager()而不是getFragmentManager()来更新gui

这样,当基本视图被破坏时,其子视图也将被删除

希望它能帮助别人