创建片段的新实例时菜单未膨胀
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 之外膨胀一个菜单
当片段具有选项菜单时,Android Chrome Cast 介绍 Overlay 的行为不正确