我怎样才能得到我的活动的选项菜单?

在我的活动的一些方法中,我想检查菜单的标题或知道它是否被检查。 我怎样才能得到活动的菜单。 我需要像this.getMenu()

警惕invalidateOptionsMenu() 。 它重新创build整个菜单。 这有很多开销,并会重置像SearchView这样的embedded式组件。 我花了相当长的时间来追查为什么我的SearchView将“随机”closures。

我最终捕获了Dark发布的菜单,然后根据需要调用onPrepareOptionsMenu(Menu) 。 这符合我的要求,没有讨厌的副作用。 问题:确保在创build菜单之前调用onPrepareOptionsMenu()执行空检查。 我做了如下:

 private Menu mOptionsMenu; @Override public boolean onCreateOptionsMenu(final Menu menu) { mOptionsMenu = menu ... } private void updateOptionsMenu() { if (mOptionsMenu != null) { onPrepareOptionsMenu(mOptionsMenu); } } 

调用invalidateOptionsMenu()而不是传入菜单对象。

你可以通过将Menu对象传递给Activity类来完成

 public class MainActivity extends Activity { ... ... private Menu _menu = null; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); _menu = menu; return true; } private Menu getMenu() { //use it like this return _menu; } } 

有几个提供菜单作为参数的callback方法。

你可能想在那里操纵它。

例如:

 onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) onCreateOptionsMenu(Menu menu) onCreatePanelMenu(int featureId, Menu menu) 

还有其他几个,最好在活动文档中看一看你想要的方法: http : //developer.android.com/reference/android/app/Activity.html

据我所知,你想在这里可以帮助你:

1.通过选项菜单参考本教程。

2.每当用户按菜单button,你可以检查它的标题,通过getTitle()

3.或者如果你想知道当用户没有按菜单button时select或select的最后一个菜单项,那么当用户按下时,你需要存储首选项。

Interesting Posts