我有一个带有2个片段的ViewPager。每个片段都包含一个MenuProvider,添加如下:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
requireActivity().addMenuProvider(new MyMenuProvider1(), getViewLifecycleOwner());
}
但是在打开包含ViewPager的Activity之后,我总是看到第二个片段的菜单,切换片段并没有改变任何东西。看起来第二个片段的MenuProvider总是覆盖第一个片段。如果我用旧的和不赞成的方式管理菜单,菜单就能正确切换。
我做错了什么?有没有一种自动的方式在ViewPager内部切换MenuProviders?
2条答案
按热度按时间3b6akqbq1#
正如前面的评论所建议的,您的pager通过最初创建它的两个子片段,然后将它们持久化在内存中来进行优化。我建议在
ViewPager
回调中添加/删除MenuProvider
示例,而不是在子片段onViewCreated
中添加/删除x1m0 n1,示例。当ViewPager更改页面时,您可以添加/删除示例。它看起来如下所示:bhmjp9jg2#
在
Activity
中定义MenuProvider
是最简单的方法:然后在
Fragment
内更改MenuProvider
: