我的Activity包含许多片段,并且发现每次在Activity中打开底部表单片段时,都会再次调用onCreateOptionsMenu函数。如何确保仅在Activity启动期间调用该函数我尝试使用添加菜单提供程序、setHasMenuOptions和invalidate函数。
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(); }
1条答案
按热度按时间wgx48brx1#
避免这种情况的一个方法是检查菜单是否已经创建,并且只在菜单还没有创建时调用onCreateOptionsMenu。你可以使用一个布尔变量来实现这一点,如下面的代码:
还可以在片段的onPause方法中调用invalidateOptionsMenu以使菜单无效,以便在下次打开菜单时再次调用onCreateOptionsMenu。