android – Viewpager中的Fragments的OptionsMenu显示对方的按钮

android – Viewpager中的Fragments的OptionsMenu显示对方的按钮,第1张

概述我在观众中有三个片段. 其中两个片段有自己的版本的onCreateOptionsMenu方法: @Overridepublic void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); // Set up 1 action but 我在观众中有三个片段.

其中两个片段有自己的版本的onCreateOptionsMenu方法:

@OverrIDepublic voID onCreateOptionsMenu(Menu menu,MenuInflater inflater) {    super.onCreateOptionsMenu(menu,inflater);    // Set up 1 action button    inflater.inflate(R.menu.home_snapshot_add,menu);}@OverrIDepublic voID onCreateOptionsMenu(Menu menu,inflater);    // Set up 2 action buttons    inflater.inflate(R.menu.home_snapshot_send,menu);}

home活​​动有一个基本的onCreateOptionsMenu方法:

@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    return false;}

在onCreate方法中,每个片段调用方法:

setHasOptionsMenu(true);

每个菜单项有标签:

androID:showAsAction="always"

看起来像我打开活动,所有三个按钮出现.
然而,当我滚动他们,错误的人神奇地消失.
感觉就像活动在活动创建时调用每个片段的选项菜单,然后在我左右滑动时适当地更改菜单.
我已经检查了菜单,但不知道有什么问题.
任何你认为我需要检查?我有点想法.

谢谢!

解决方法 在您的VIEwPager的OnPagechangelistener中,并且将适配器设置为VIEwPager后,请具有以下功能:
@OverrIDepublic voID onPageSelected(int position){   invalIDateFragmentMenus(position);}private voID invalIDateFragmentMenus(int position){   for(int i = 0; i < mVIEwPagerFragentAdapter.getCount(); i++){      mVIEwPagerAdapter.getItem(i).setHasOptionsMenu(i == position);   }   invalIDateOptionsMenu(); //or respectively its support method.}

在使用以下参数调用片段适配器调用相同的方法后:

invalIDateFragmentMenus(mVIEwPager.getCurrentItem());

当invalIDateOptionsMenu()被调用时,上述语句将阻止所有其他片段不接受onCreateOptionsMenu()方法的调用,只有当前可见的片段才能接收并且能够填充选项菜单.

总结

以上是内存溢出为你收集整理的android – Viewpager中的Fragments的OptionsMenu显示对方的按钮全部内容,希望文章能够帮你解决android – Viewpager中的Fragments的OptionsMenu显示对方的按钮所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1132735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存