android – 菜单由于片段和活动层次结构导致的排序差异. (onCreateOptionsMenu)

android – 菜单由于片段和活动层次结构导致的排序差异. (onCreateOptionsMenu),第1张

概述背景 开发Android 3.0,我有一个HostActivity是NotebooksActivity和NoteActivity的超类. NotebooksActivity包括一个片段,NotebooksFragment. 在HostActivity中,我包含一个要显示在ActionBar选项菜单最右端的菜单,即HostActivity子类中的所有菜单项应显示在HostActivity中添加的菜单 背景

开发Android 3.0,我有一个HostActivity是NotebooksActivity和NoteActivity的超类. NotebooksActivity包括一个片段,NotebooksFragment.

在HostActivity中,我包含一个要显示在Actionbar选项菜单最右端的菜单,即HostActivity子类中的所有菜单项应显示在HostActivity中添加的菜单项的左侧.

HostActivity中的菜单通胀:

@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    final MenuInflater inflater = getMenuInflater();    inflater.inflate(R.menu.host_menu,menu);    return super.onCreateOptionsMenu(menu);}

问题

当我在NoteActivity中添加菜单项时,我按预期实现了所需的顺序:

@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    MenuInflater inflater = getMenuInflater();    inflater.inflate(R.menu.notebook_menu,menu);    return super.onCreateOptionsMenu(menu);}

但是,当我在NotebooksFragment中添加菜单项时,由于Fragments的工作原理,onCreateOptionsMenu在HostActivity中以相同的方法调用,导致HostActivity的菜单项出现在NotebooksFragment之前.

@OverrIDepublic voID onCreateOptionsMenu(Menu menu,MenuInflater inflater) {    inflater.inflate(R.menu.notebooks_menu,menu);    SearchVIEw sv = new SearchVIEw(getActivity());    sv.setonqueryTextListener(this);    menu.findItem(R.ID.search_notebooks).setActionVIEw(sv);    super.onCreateOptionsMenu(menu,inflater);}

如何实现我所需的菜单订购?

解决方法 你可以尝试使用androID:menucategory和androID:orderIncategory来更多地手动指定你的订购.

或者,在HostActivity中使用onPrepareOptionsMenu(),因为在onCreateOptionsMenu()之后调用.不利的是,它是每个MENU按钮按下,而不仅仅是第一次.

总结

以上是内存溢出为你收集整理的android – 菜单由于片段和活动层次结构导致的排序差异. (onCreateOptionsMenu)全部内容,希望文章能够帮你解决android – 菜单由于片段和活动层次结构导致的排序差异. (onCreateOptionsMenu)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131828.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存