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

升级AndroidX后Xamarin.Android中OnCreateOptionsMenu未被调用

解决AndroidX Fragment中OnCreateOptionsMenu不触发的问题

核心修复要点

AndroidX Fragment里SetHasOptionsMenu(true)方法依然存在,只是需要在正确的生命周期节点调用,同时确保菜单相关逻辑符合AndroidX的兼容规范。

具体操作步骤

  1. 在Fragment的OnCreate方法中启用菜单
    将启用菜单的逻辑移到OnCreate方法中,告知Activity该Fragment需要加载自定义菜单:

    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetHasOptionsMenu(true); // 开启Fragment菜单支持
    }
    
  2. 完善OnCreateOptionsMenu方法实现
    重写方法时务必调用基类方法,保证菜单的正常加载流程:

    public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
    {
        inflater.Inflate(Resource.Menu.your_menu_resource, menu); // 替换为你的菜单布局ID
        base.OnCreateOptionsMenu(menu, inflater); // 必须调用,否则菜单无法正常渲染
    }
    
  3. Toolbar设置的补充验证
    你当前在OnCreateView中设置Toolbar的代码是有效的,但需确认:

    • 宿主Activity确实继承自AndroidX.AppCompat.App.AppCompatActivity
    • 布局文件中Toolbar的ID与代码中引用的Resource.Id.drawerToolbar完全一致

额外排查方向

  • 若使用嵌套Fragment,需确保父Fragment也调用了SetHasOptionsMenu(true),否则子Fragment的菜单不会被触发
  • 检查宿主Activity的OnCreateOptionsMenu方法是否调用了base.OnCreateOptionsMenu(menu),缺失此调用会阻断Fragment菜单的加载流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:40:23