代码之家  ›  专栏  ›  技术社区  ›  buradd

Android 8.0碎片事务不工作

  •  1
  • buradd  · 技术社区  · 6 年前

    在使用Android 7.0的Galaxy S8+上,以下行正确执行以刷新我的片段:

    fragmentManager.beginTransaction().detach(myFragment).attach(myFragment).commit();
    

    在另一个安装了Android 8.0的Galaxy S8+上,该片段似乎根本没有刷新,我必须手动删除该片段并重新打开它。。这让我抓狂,有人知道为什么Android 8.0会这样做,以及如何修复吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   buradd    6 年前

    我不知道为什么会这样,但如果我将其分解为两个调用,并且(重要的)使用commitNow()而不是commit(),它的工作方式与以前的API上的工作方式相同

    fragmentManager.beginTransaction().detach(myFragment).commitNow();
    fragmentManager.beginTransaction().attach(myFragment).commitNow();
    

    如果有人看到更好的解决方案,请告诉我。由于某些原因,我没有正确地使用这个补丁,但我会使用它,除非有人告诉我为什么我不应该使用它!