在使用Android 7.0的Galaxy S8 +上,以下行正确执行以刷新我的片段:
fragmentManager.beginTransaction().detach(myFragment).attach(myFragment).commit();
在另一款搭载Android 8.0的Galaxy S8 +上,片段似乎根本没有刷新,我必须手动删除片段并重新打开它......这让我疯狂,让任何人都知道为什么Android 8.0正在做这个以及如何解决?
答案 0 :(得分:0)
我不知道为什么会这样,但是如果我将其分解为两个调用并且(重要)使用commitNow()而不是commit(),它就像以前的API一样工作
fragmentManager.beginTransaction().detach(myFragment).commitNow();
fragmentManager.beginTransaction().attach(myFragment).commitNow();
如果有人看到更好的解决方案,请告诉我。出于某些原因,我不会因为这个问题而坐在我的脑海中,但除非有人告诉我为什么我不应该这样做,否则我会去使用它!