其中两个片段有自己的版本的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显示对方的按钮所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)