java-为什么onCreateOptionsMenu运行多次?
作者:互联网
出于某种原因,我的onCreateOptionsMenu和onPrepareOptionsMenu运行了两次(在这两个方法的开头都检查了日志输入).我有多个片段会发生这种情况,包括一些非常基本的片段(只是夸大菜单,别无其他).
这是存在此问题的onCreateOptionsMenus之一:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.actionbuttons_add_removeall, menu);
optionsMenu = menu;
}
是什么导致这些方法被多次调用(大多数情况下两次)?
更新资料
我发现这是(以某种方式)由我使用的RecyclerView引起的.出现此问题的所有视图都使用RV,而我之前提到的视图没有此问题,的确没有.
有了这个新信息,RV的哪一部分可能会引起此问题?
更新2
我发现我在适配器的getItemCount()方法中调用了.invalidateOptionsMenu().我以为这会调用onPrepareOptionsMenu(),但在阅读文档时,似乎调用了onCreateOptionsMenu().我可能在这里颠倒了onCreate ..()和onPrepare ..(),现在要检查一下.
更新3
我刚刚意识到我使RecyclerViewAdapter的getItemCount()方法中的选项菜单无效,该菜单显然在首次创建该片段时运行.
@Override
public int getItemCount() {
int tableSize = getTableSizeMethod();
if (tableSize < 1) {
if (!AppManagerFragment.hideDeleteAllButton) {
AppManagerFragment.hideDeleteAllButton = true;
((Activity) context).invalidateOptionsMenu();
return 0;
}
} else {
if (!AppManagerFragment.hideDeleteAllButton) {
AppManagerFragment.hideDeleteAllButton = false;
((Activity) context).invalidateOptionsMenu();
return tableSize;
}
}
}
解决方法:
这是我自己的错.我使RecyclerViewAdapter的getItemCount()方法中的选项菜单无效,该菜单显然在启动片段时运行.您可以检查出包含我的错误的代码的问题.感谢所有的帮助/建议.
标签:android-optionsmenu,java,android,oncreateoptionsmenu 来源: https://codeday.me/bug/20191118/2027230.html