У меня тоже была такая же проблема.В моем случае у меня есть одно действие с viewpager, которое содержит два фрагмента, каждый фрагмент раздувает свое собственное меню действий, но меню действий фрагментов не отображается.
Просмотр кода адаптера пейджера
public class ScreensAdapter extends FragmentPagerAdapter {
public TrackerScreensAdapter(Context context, FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 2;
}
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position){
case 0:
fragment = new Fragment1();
break;
case 1:
fragment = new Fragment2();
break;
}
return fragment;
}
}
Деятельность при создании
screensAdapter = new ScreensAdapter(this, getFragmentManager());
viewPager.setAdapter(screensAdapter);
Таким образом, мой viewPager имеет два фрагмента, каждый фрагмент запускает свою собственную задачу в onActivityCreated, получает данные и рисует свой макет на основе полученных данных.Также каждый фрагмент имеет onCreateOptionsMenu
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
MyTask task = new MyTask();
task.setTaskListener(this);
task.execute();
}
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fragment_menu, menu);
}
Потратил много раз, чтобы решить эту проблему и выяснить, почему меню фрагментов не отображается.Все, что мне было нужно, это
screenAdapter = new ScreenAdapter(this, getFragmentManager());
viewPager.post(new Runnable() {
public void run() {
viewPager.setAdapter(screenAdapter);
}
});