我怎样才能得到我的活动的选项菜单?
在我的活动的一些方法中,我想检查菜单的标题或知道它是否被检查。 我怎样才能得到活动的菜单。 我需要像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的最后一个菜单项,那么当用户按下时,你需要存储首选项。