1

我有一个更新菜单的功能。问题是:这个函数应该在应用程序启动时调用,但是onCreate()因为此时没有创建菜单所以我得到了一个异常。几乎在开始时还有其他可能调用此 MenuUpdate 吗?

4

3 回答 3

2

您可以使用该功能onCreateOptionsMenu,这是一个在创建过程中隐藏了一些菜单项的示例:

@Override
public boolean onCreateOptionsMenu(Menu menu) {     
    getMenuInflater().inflate(R.menu.main_activity, (android.view.Menu) menu);
    this.menu = menu;
    showOption(R.id.menu_edit);
    hideOption(R.id.menu_check);
    hideOption(R.id.menu_cancel);

    return true;
}
于 2013-05-12T07:14:46.167 回答
0

If your function needs to update menu, call

supportInvalidateOptionsMenu();

in your activity class to refresh immediately.

于 2013-05-12T07:27:15.767 回答
0

Android Activity 有一种方法onPrepareOptionsMenu(Menu menu),您可以在其中访问菜单项。要启动对此函数的调用,您必须调用invalidateOptionsMenu(). 因此,在活动方法中更新菜单的代码onCreate(...)将如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    updateMenu();
} 

@Override
public void onPrepareOptionsMenu(Menu menu) {
    // Do update staff with menu instance
}

private void updateMenu() {
    invalidateOptionsMenu();
}
于 2013-05-13T18:37:23.000 回答