创建片段的新实例时菜单未膨胀

Posted

技术标签:

【中文标题】创建片段的新实例时菜单未膨胀【英文标题】:Menu not being inflated when a new instance of fragment is created 【发布时间】:2021-12-23 17:04:48 【问题描述】:

我正在使用以下代码在片段中设置工具栏:

  val activity = activity as AppCompatActivity?
       activity?.run 
            setSupportActionBar(profileToolbar)
            supportActionBar?.setDisplayHomeAsUpEnabled(false)
            supportActionBar?.setDisplayShowHomeEnabled(false)
        
        setHasOptionsMenu(true)

然后膨胀菜单:

  override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) 
    super.onCreateOptionsMenu(menu, inflater)
    inflater.inflate(R.menu.profile_menu, menu)

代码在一种情况下运行良好。就像我的项目有多个活动一样,当片段从主屏幕启动时,它工作正常,但从另一个屏幕启动时,它不会膨胀选项菜单

我们将不胜感激。

【问题讨论】:

【参考方案1】:

改变这个:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
        inflater.inflate(R.menu.more_drawer, menu);
        super.onCreateOptionsMenu(menu, inflater);

    

使用: setHasOptionsMenu(true);看完inflates-creates:

@Override
public void onActivityCreated(Bundle savedInstanceState) 
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    setHasOptionsMenu(true);

【讨论】:

试过但没用

以上是关于创建片段的新实例时菜单未膨胀的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式创建 Menu 实例?即在 onCreateOptionsMenu 之外膨胀一个菜单

如何在片段中使用与活动中不同的菜单?

FloatingActionButton 子菜单

当片段具有选项菜单时,Android Chrome Cast 介绍 Overlay 的行为不正确

Android:在drawerlayout中使用地图膨胀片段时出错

片段对话框中的片段膨胀引发错误“片段未创建视图”