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

Xamarin Android底部导航栏新SetOnItemSelectedListener如何实现?

Xamarin Android API 30 下BottomNavigationView选中监听适配方案

Android API 30起,BottomNavigationView的SetOnNavigationItemSelectedListener方法及对应NavigationItemSelected事件已被废弃,需替换为新的SetOnItemSelectedListener及ItemSelected事件实现同等功能。

直接替换后的业务代码

bottomNavigation = FindViewById<BottomNavigationView>(Resource.Id.navigation);
// 若你的Activity/Fragment实现了对应监听接口,使用这行替换原有监听设置
bottomNavigation.SetOnItemSelectedListener(this);
// 替换事件订阅,原有业务逻辑基本无需改动
bottomNavigation.ItemSelected += Navigation_ItemSelected;

事件回调方法适配

原有Navigation_NavigationItemSelected方法仅需调整参数类型即可复用:

private void Navigation_ItemSelected(object sender, BottomNavigationView.ItemSelectedEventArgs e)
{
    // 原有逻辑直接复用,e.Item对应之前的选中菜单项
    switch (e.Item.ItemId)
    {
        case Resource.Id.nav_home:
            // 首页跳转逻辑
            break;
        case Resource.Id.nav_dashboard:
            // 仪表盘跳转逻辑
            break;
        case Resource.Id.nav_mine:
            // 个人中心跳转逻辑
            break;
    }
}

接口实现方式适配

如果你之前是让Activity/Fragment实现IOnNavigationItemSelectedListener接口,现在替换为实现Google.Android.Material.BottomNavigation.IOnItemSelectedListener接口即可,方法逻辑直接复用:

// 替换原有IOnNavigationItemSelectedListener的实现方法
public bool OnItemSelected(IMenuItem item)
{
    switch (item.ItemId)
    {
        // 原有case判断逻辑直接复用
    }
    // 返回true表示消费该选中事件
    return true;
}

注意事项

  • 需保证项目引用的Xamarin.Google.Android.Material Nuget包版本升级到1.3.0及以上,才能正常调用新接口
  • 新的ItemSelected事件默认会自动处理底部导航栏的选中状态高亮,无需额外手动调用SetChecked

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:18:03