在嵌套片段中使用 OptionsMenu 不更新
Working with OptionsMenu in nested fragment not updating
我展示了一个片段 A,它实现了带有多个片段(嵌套片段)的 ViewPager。
在我的嵌套片段中,我使用以下方法扩充菜单。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
这个问题已经有人问过 here。我尝试了所有的答案,但都不起作用。
我的问题是
当我打开另一个片段(它没有任何选项菜单)并在单击菜单项 onOptionsItemSelected 未触发时返回到上一个视图寻呼机片段时,一切正常fine.but。当我在 viewpager 中滑动片段并返回到上一个片段时,当我单击菜单项时它会触发。
这是因为 viewpager 一次保持 3 个片段处于活动状态。所以当你回来时,它会将菜单可见性状态设置为 true 到最后一个片段。这就是为什么您的菜单项点击没有触发。
在案例片段 A 中保留 viewpager 的片段中使用以下内容。
private boolean isInitial=true;
@Override
public void onResume() {
super.onResume();
if (!isInitial) {
int pos = viewpager.getCurrentItem();
if (pageAdapter.getItem(pos).getUserVisibleHint() && pageAdapter.getItem(pos).isVisible()) {
pageAdapter.getItem(pos).setMenuVisibility(true);
}
} else {
isInitial = false;
}
}
我展示了一个片段 A,它实现了带有多个片段(嵌套片段)的 ViewPager。
在我的嵌套片段中,我使用以下方法扩充菜单。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
这个问题已经有人问过 here。我尝试了所有的答案,但都不起作用。
我的问题是 当我打开另一个片段(它没有任何选项菜单)并在单击菜单项 onOptionsItemSelected 未触发时返回到上一个视图寻呼机片段时,一切正常fine.but。当我在 viewpager 中滑动片段并返回到上一个片段时,当我单击菜单项时它会触发。
这是因为 viewpager 一次保持 3 个片段处于活动状态。所以当你回来时,它会将菜单可见性状态设置为 true 到最后一个片段。这就是为什么您的菜单项点击没有触发。
在案例片段 A 中保留 viewpager 的片段中使用以下内容。
private boolean isInitial=true;
@Override
public void onResume() {
super.onResume();
if (!isInitial) {
int pos = viewpager.getCurrentItem();
if (pageAdapter.getItem(pos).getUserVisibleHint() && pageAdapter.getItem(pos).isVisible()) {
pageAdapter.getItem(pos).setMenuVisibility(true);
}
} else {
isInitial = false;
}
}