从BottomSheetDialogFragment打开Fragment显示在后方的问题咨询
问题原因解析
- 窗口层级优先级问题:BottomSheetDialogFragment本质是Dialog类的扩展,它的窗口拥有独立的Z轴层级,且默认高于宿主Activity的内容容器层级。当通过Navigation Component导航到新Fragment时,新Fragment会被添加到宿主Activity的导航容器(如
R.id.nav_host_fragment)中,这个容器的层级低于BottomSheet的弹窗窗口,导致新Fragment被遮挡。 - 导航上下文错误:如果在BottomSheet内部获取NavController时,错误使用了BottomSheet自身的
getChildFragmentManager()而非宿主Activity的findNavController(),也可能导致新Fragment被添加到BottomSheet的子容器中,进一步被弹窗遮挡。不过这种情况的核心还是层级问题,只是导航目标容器选错了。
内容的提问来源于stack exchange,提问作者YadavK
相关产品推荐
相关产品推荐

