【问题标题】:Fragment doesn't show second time it's used片段在第二次使用时不显示
【发布时间】:2016-05-04 22:40:09
【问题描述】:

我有一个 Activity 架构,我在 MainActivity 中的另一个 ViewGroup 中加载了一个 PreferenceFragmentCompatMainActivity 中存在自定义导航,因此您可以使用片段加载ViewGroup,并在同一个MainActivity 中导航离开它。

我第一次导航到ViewGroup 时,PreferenceFragmentCompat 加载得非常好。但是,当我离开包含 PreferenceFragmentCompatViewGroup 并再次返回时,PreferenceFragmentCompat 不会在随后出现。 ViewGroup 可以,但是片段应该在的地方是空的。我可以通过断点/日志看到片段正在经历其生命周期——它只是不可见。

每次我导航回ViewGroup 时,都会创建一个包含ViewGroup 和一个新PreferenceFragmentCompat 对象对的新对象,因此它不应附加到旧ViewGroup。导航架构过于复杂,无法在此处发布,但这是我每次在包含 ViewGroup 的类中添加片段的方式:

CustomPreferenceFragment fragment = new CustomPreferenceFragment();
FragmentManager fm = activity.getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_frame_container, fragment);
ft.commit();

有人知道为什么片段可能没有显示吗?

【问题讨论】:

    标签: android android-layout android-fragments android-appcompat preferencefragment


    【解决方案1】:

    我发现了问题。这比我预期的要简单得多。因为每次都会创建一个新的ViewGroup,所以片段会在被新的ViewGroup 替换之前被添加到旧的ViewGroup,因为它们都包含R.id.fragment_frame_container 视图。解决方案是不要每次都创建一个新的ViewGroup(如果它已经存在)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2014-06-04
      • 2020-12-31
      • 2020-02-01
      相关资源
      最近更新 更多