我在观众中有三个片段.
其中两个片段有自己的版本的onCreateOptionsMenu方法:
@Override public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) { super.onCreateOptionsMenu(menu,inflater); // Set up 1 action button inflater.inflate(R.menu.home_snapshot_add,menu); } @Override public void onCreateOptionsMenu(Menu menu,inflater); // Set up 2 action buttons inflater.inflate(R.menu.home_snapshot_send,menu); }
home活动有一个基本的onCreateOptionsMenu方法:
@Override public boolean onCreateOptionsMenu(Menu menu) { return false; }
setHasOptionsMenu(true);
android:showAsAction="always"
看起来像我打开活动,所有三个按钮出现.
然而,当我滚动他们,错误的人神奇地消失.
感觉就像活动在活动创建时调用每个片段的选项菜单,然后在我左右滑动时适当地更改菜单.
我已经检查了菜单,但不知道有什么问题.
任何你认为我需要检查?我有点想法.
谢谢!
解决方法
在您的ViewPager的OnPagechangelistener中,并且将适配器设置为ViewPager后,请具有以下功能:
@Override public 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()方法的调用,只有当前可见的片段才能接收并且能够填充选项菜单.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。