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

从Activity返回父布局抽屉菜单时,悬浮高亮选中错误菜单问题

问题原因

承载抽屉导航的主Activity在跳转到子Activity时,仅进入后台暂停状态,不会主动更新菜单选中标识;从子Activity返回时,主Activity恢复前台展示,但未同步当前实际显示页面与菜单选中态,就会出现高亮滞后的问题。

修复方案

分两种常用实现场景处理:

场景1:使用Jetpack Navigation组件实现导航

在主Activity的onResume生命周期中,主动同步当前导航栈顶目的地与菜单选中状态:

override fun onResume() {
    super.onResume()
    val navController = findNavController(R.id.nav_host_fragment)
    // 匹配当前栈顶目的地对应菜单项,更新选中状态
    navController.currentDestination?.id?.let { destId ->
        binding.navView.setCheckedItem(
            when(destId) {
                R.id.home_fragment -> R.id.menu_home
                R.id.settings_fragment -> R.id.menu_settings
                // 其余页面与菜单项的对应关系自行补全
                else -> R.id.menu_home
            }
        )
    }
}

场景2:自定义DrawerLayout+Fragment切换实现导航

在主Activity的onResume生命周期中,判断当前容器内显示的Fragment,主动修改菜单选中态:

@Override
protected void onResume() {
    super.onResume();
    Fragment currentFrag = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
    if (currentFrag instanceof HomeFragment) {
        navigationView.setCheckedItem(R.id.menu_home);
    } else if (currentFrag instanceof SettingsFragment) {
        navigationView.setCheckedItem(R.id.menu_settings);
    }
    // 其余Fragment对应逻辑自行补全
}

避坑提示:不要在子Activity中操作主Activity的菜单状态,受页面销毁时序影响容易出现状态更新失效,统一在主Activity恢复前台时处理状态同步稳定性最高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:03