使用导航架构时如何设置“允许重新排序”?
Posted
技术标签:
【中文标题】使用导航架构时如何设置“允许重新排序”?【英文标题】:How to set `setReorderingAllowed` when using Navigation Architechture? 【发布时间】:2020-12-12 22:58:51 【问题描述】:在使用导航架构时延迟片段的进入转换时,图表中的“主页”片段会显示一微秒。谷歌搜索了一下后,文档告诉我在 fragmentManager 上设置setReorderingAllowed(true)
以优化此流程。但是,文档不使用导航架构组件。
请问setReorderingAllowed(true)
使用导航架构组件时如何实现?
【问题讨论】:
您可以在 NavHostFragment 的 childFragmentManager 上设置一些属性。这是你需要的吗? 谢谢,但是不,我没有在其中或其任何属性中找到 setReorderingAllowed 方法。 也许某种 hack like this 应该会有所帮助。没有其他想法。 谢谢!实际上,该线程中的其他 cmet 之一帮助了我!我已经在那里调用了postponeEnterTransition
和startPosponedEnterTransition
,但是在父片段上调用它们解决了我的问题!参考此评论:github.com/android/architecture-components-samples/issues/… 再次感谢!
【参考方案1】:
setReorderingAllowed(true)
是在使用naivate()
时自动设置的。见FragmentNavigator
实现:
public NavDestination navigate(@NonNull Destination destination, @Nullable Bundle args,
@Nullable NavOptions navOptions, @Nullable Navigator.Extras navigatorExtras)
// OTHER CODE
// OTHER CODE
ft.setReorderingAllowed(true);
ft.commit();
// The commit succeeded, update our view of the world
if (isAdded)
mBackStack.add(destId);
return destination;
else
return null;
【讨论】:
以上是关于使用导航架构时如何设置“允许重新排序”?的主要内容,如果未能解决你的问题,请参考以下文章