片段不显示第二次使用
Fragment doesn't show second time it's used
我有一个单一的 Activity
架构,我在 MainActivity
中的另一个 ViewGroup
中加载一个 PreferenceFragmentCompat
。 MainActivity
中存在自定义导航,因此您可以使用片段加载 ViewGroup
并在同一个 MainActivity
.
中导航离开它
我第一次导航到 ViewGroup
时,PreferenceFragmentCompat
加载得非常好。但是,当我离开包含 PreferenceFragmentCompat
的 ViewGroup
然后再次返回时,PreferenceFragmentCompat
不会出现后续时间。 ViewGroup
确实如此,但是片段应该在的地方是空的。我可以通过 breakpoints/logging 看到片段正在经历它的生命周期——它只是不可见。
每次我导航回 ViewGroup
时都会创建一个新的包含 ViewGroup
和一个新的 PreferenceFragmentCompat
对象对,所以它不应该附加到旧的 ViewGroup
。导航架构对于 post 来说太复杂了,但这是我每次在包含 ViewGroup
class 中添加片段的方式:
CustomPreferenceFragment fragment = new CustomPreferenceFragment();
FragmentManager fm = activity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_frame_container, fragment);
ft.commit();
有谁知道为什么片段可能没有出现?
我发现了问题。这比我预期的要简单得多。因为每次都会创建一个新的 ViewGroup
,所以在旧的 ViewGroup
片段被新片段替换之前,片段被添加到旧的 ViewGroup
中,因为它们都包含 R.id.fragment_frame_container
视图。解决方案是,如果 ViewGroup
已经存在,就不要每次都创建它。
我有一个单一的 Activity
架构,我在 MainActivity
中的另一个 ViewGroup
中加载一个 PreferenceFragmentCompat
。 MainActivity
中存在自定义导航,因此您可以使用片段加载 ViewGroup
并在同一个 MainActivity
.
我第一次导航到 ViewGroup
时,PreferenceFragmentCompat
加载得非常好。但是,当我离开包含 PreferenceFragmentCompat
的 ViewGroup
然后再次返回时,PreferenceFragmentCompat
不会出现后续时间。 ViewGroup
确实如此,但是片段应该在的地方是空的。我可以通过 breakpoints/logging 看到片段正在经历它的生命周期——它只是不可见。
每次我导航回 ViewGroup
时都会创建一个新的包含 ViewGroup
和一个新的 PreferenceFragmentCompat
对象对,所以它不应该附加到旧的 ViewGroup
。导航架构对于 post 来说太复杂了,但这是我每次在包含 ViewGroup
class 中添加片段的方式:
CustomPreferenceFragment fragment = new CustomPreferenceFragment();
FragmentManager fm = activity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_frame_container, fragment);
ft.commit();
有谁知道为什么片段可能没有出现?
我发现了问题。这比我预期的要简单得多。因为每次都会创建一个新的 ViewGroup
,所以在旧的 ViewGroup
片段被新片段替换之前,片段被添加到旧的 ViewGroup
中,因为它们都包含 R.id.fragment_frame_container
视图。解决方案是,如果 ViewGroup
已经存在,就不要每次都创建它。