You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Navigation Component跳转新Fragment背景透明问题求助

原因分析

Navigation Component 默认采用**添加(add)**的方式加载新 Fragment,旧 Fragment 只会进入停止状态(视图不会被销毁),如果新 Fragment 的根布局没设置不透明背景,就会看到下方的首页内容。而之前用 FrameLayout 时,你应该是用 replace() 直接替换了旧 Fragment,所以没这个问题。

解决办法

1. 给新Fragment设置不透明背景(首选)

打开 database_saved_countries 对应的布局文件,给根布局加上背景色:

<!-- 替换成你需要的背景色,比如主题默认背景 -->
android:background="@color/white"

这种方法最简单,还能保留 Navigation 的返回栈特性,按返回键可以回到首页。

2. 修改导航图的跳转逻辑(可选)

如果不需要保留首页在返回栈里,在 nav_graph.xml 中配置跳转的 action:

<action
    android:id="@+id/action_home_to_database"
    app:destination="@id/database_saved_countries"
    app:popUpTo="@id/home_fragment"
    app:popUpToInclusive="true"/>
  • popUpTo:指定清理返回栈到首页 Fragment
  • popUpToInclusive="true":把首页也从栈中移除,此时按返回键直接退出应用

额外检查

  • 你的 NavigationMainComponent 导航逻辑没问题,无需修改
  • 确认新 Fragment 的主题没有使用透明背景样式,若有则替换为不透明主题

内容的提问来源于stack exchange,提问作者Kratos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:40:27