Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 菜单由于片段和活动层次结构导致的排序差异. (onCreateOptionsMenu)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
背景

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

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

HostActivity中的菜单通胀:

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

问题

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

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

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

@Override
public 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)所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: