Как использовать элементы Actionbar с помощью Viewpager + Fragments

Я пытаюсь выяснить, как реализовать элементы Actionbar на основе Фрагмента, который загружается внутри моего viewpager. Мой код ниже, и я просто пытаюсь найти оптимальную практику для работы с ABS + ViewPager + Fragments.

Основная деятельность

public class MainActivity extends SherlockFragmentActivity { private ViewPager mPager; private TitlePageIndicator mIndicator; private MainPagerAdapter mAdapter; private List<Fragment> mFragments; private static final String FRAGMENT1 = Fragment1.class.getName(); private static final String FRAGMENT2 = Fragment2.class.getName(); private static final String FRAGMENT3 = SupportFragment.class.getName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a_main); // add fragments mFragments = new ArrayList<Fragment>(); mFragments.add(Fragment.instantiate(this, FRAGMENT1)); mFragments.add(Fragment.instantiate(this, FRAGMENT2)); mFragments.add(Fragment.instantiate(this, FRAGMENT3)); // adapter mAdapter = new MainPagerAdapter(getSupportFragmentManager(), mFragments); // pager mPager = (ViewPager) findViewById(R.id.view_pager); mPager.setAdapter(mAdapter); // indicator mIndicator = (TitlePageIndicator) findViewById(R.id.title_indicator); mIndicator.setViewPager(mPager); } ... 

MainPagerAdapter

 public class MainPagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragments; private String[] titles = new String[] {"System", "Community", "Support"}; private int mCount = titles.length; public MainPagerAdapter(FragmentManager fm, List<Fragment> f) { super(fm); mFragments = f; } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mCount; } @Override public CharSequence getPageTitle(int position) { return titles[position]; } 

Fragment1

  public class Fragment1 extends SherlockFragment { WebView web; static ProgressBar progressBar; @Override public View onCreateView(LayoutInflater inf, ViewGroup grp, Bundle icicle) { View v = inf.inflate(R.layout.activity_main, grp, false); web = (WebView) v.findViewById(R.id.webView); progressBar = (ProgressBar) v.findViewById(R.id.progressBar1); return v; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); web.setWebViewClient(new SpecialWebView(progressBar)); web.setWebChromeClient(new SpecialWebChromeClient(progressBar)); // Progress Bar - End WebSettings websettings = web.getSettings(); websettings.setBuiltInZoomControls(false); web.setBackgroundColor(Color.parseColor("#f2f2f2")); websettings.setUseWideViewPort(true); websettings.setJavaScriptEnabled(true); websettings.setAllowFileAccess(true); websettings.setDomStorageEnabled(true); websettings.setLoadWithOverviewMode(true); websettings.setSavePassword(true); web.loadUrl("http://www.google.com"); } 

Внутри моей MainActivity я пробовал следующее и не могу получить код правильно.

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater Inflater = getSupportMenuInflater(); Inflater.inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem Item) { final int current = ((ViewPager) mFragments).getCurrentItem(); String currentId = current == 0 ? FRAGMENT1: (current == 1 ? FRAGMENT2: FRAGMENT3); //WebView web = (WebView) findViewById(currentId); switch (Item.getItemId()) { case R.id.menu_back: // web.goBack(); return true; case R.id.menu_forward: //web.goForward(); return true; case R.id.menu_refresh: //web.reload(); return true; } return super.onOptionsItemSelected(Item); } 

Solutions Collecting From Web of "Как использовать элементы Actionbar с помощью Viewpager + Fragments"

Я пытаюсь выяснить, как реализовать элементы Actionbar на основе Фрагмента, который загружается внутри моего viewpager.

Это происходит автоматически. Просто нужно, чтобы фрагменты вызывали setHasOptionsMenu(true) , а затем реализовали onCreateOptionsMenu() и onOptionsItemSelected() . Fragment*PagerAdapter организует Fragment*PagerAdapter панели действий после изменения страницы, чтобы удалить элементы панели действий с предыдущей страницы и ввести элементы панели действий с новой страницы.

Вот пример проекта, демонстрирующий, что элементы панели действий приходят и уходят, поскольку только страницы с нечетным номером (для индексов на основе 1, что видит пользователь) имеют элементы панели действий.