【问题标题】:Strange behaviour replacing fragments in Android在Android中替换片段的奇怪行为
【发布时间】:2015-08-05 13:29:51
【问题描述】:

我已经在一个应用程序中工作了几个月。上传到 playstore 的版本运行良好。最近,做了一些改进,整个应用程序开始以一种非常奇怪的方式运行。

如果您在片段之间切换,一段时间后它不会正确膨胀片段,始终放置第一个片段的内容。因此,如果您切换片段,操作栏会发生变化,但内容始终相同(并且您无法与之交互)。

这是错误https://streamable.com/9exa的快速视频

我快疯了,因为没有任何日志或跟踪。

我正在使用通常的方式切换片段,最有趣的部分是一开始一切正常:

Fragment fragment = getSelectedFragment(index); // returns the desired fragment
FragmentManager fragmentManager = getFragmentManager();

//Pop backstack
for(int i = 0; i < fragmentManager.getBackStackEntryCount(); ++i) {
    fragmentManager.popBackStack();
}

fragmentManager.beginTransaction()
               .replace(R.id.container, fragment)
               .addToBackStack(null)
               .commit();

有人知道这里会发生什么吗?谢谢!

编辑:我也尝试清除后台堆栈以防万一,但它不会改变任何东西

已解决:正如我在回答中解释的那样,我发现这是与 SwipeRefreshLayout 相关的问题。有关此问题的更多信息,请访问When switch fragment with SwipeRefreshLayout during refreshing, fragment freezes but actually still work

【问题讨论】:

    标签: android android-fragments fragmentmanager


    【解决方案1】:

    好的,我发现了问题。

    似乎SwipeRefreshLayout 是导致所有问题的原因。我的一个片段正在使用它,在切换片段几次后它卡住了。

    删除或禁用它setEnabled(false) 解决了所有问题。

    希望对遇到同样问题的人有所帮助!

    SO 中涉及相同问题的另一个线程:When switch fragment with SwipeRefreshLayout during refreshing, fragment freezes but actually still work

    【讨论】:

      【解决方案2】:

      你用的是什么片段?

      我在使用框架片段时遇到了一些奇怪的行为,我切换到 V4 并且一切正常

      【讨论】:

      • 我刚刚把所有的片段都换成了v4,可惜问题依旧
      【解决方案3】:

      请查看此链接:FragmentManager popBackStack doesn't remove fragment

      我在我的活动中使用以下代码在片段之间切换,它工作正常。我的应用的 minSdkVersion 是 15。

          private void setFragment(Fragment fragment) {
              FragmentManager fragmentManager = getSupportFragmentManager();
              FragmentTransaction fragmentTransaction =
                  fragmentManager.beginTransaction();
              fragmentTransaction.replace(R.id.container, fragment);
              fragmentTransaction.commit();
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        • 1970-01-01
        相关资源
        最近更新 更多