android 如何在创建片段时只调用onCreateMenuOptions一次

esyap4oy  于 2023-02-06  发布在  Android
关注(0)|答案(1)|浏览(121)

我的Activity包含许多片段,并且发现每次在Activity中打开底部表单片段时,都会再次调用onCreateOptionsMenu函数。如何确保仅在Activity启动期间调用该函数
我尝试使用添加菜单提供程序、setHasMenuOptions和invalidate函数。

wgx48brx

wgx48brx1#

避免这种情况的一个方法是检查菜单是否已经创建,并且只在菜单还没有创建时调用onCreateOptionsMenu。你可以使用一个布尔变量来实现这一点,如下面的代码:

private boolean mOptionsMenuCreated = false;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mOptionsMenuCreated) {
        getMenuInflater().inflate(R.menu.your_menu, menu);
        mOptionsMenuCreated = true;
    }
    return true;
}

还可以在片段的onPause方法中调用invalidateOptionsMenu以使菜单无效,以便在下次打开菜单时再次调用onCreateOptionsMenu。

@Override
public void onPause() {
    super.onPause();
    getActivity().invalidateOptionsMenu();
}

相关问题