Intereting Posts
Как использовать googletest для тестирования кода на C ++, который вызывает java на android? Как установить конфигурацию USB по умолчанию для Android M на MTP, а не на «только зарядку»? Показать подсказку, чтобы узнать местоположение Как разбирать JSON в Android Как использовать EditTextPreference в качестве текстового поля с маскированным паролем? 9patch для большого количества ресурсов без потери качества Eclipse не создает новый файл Activity и xml layout (проблемы, возникшие после обновления eclipse и sdk) Force Parse Push Уведомления использовать PPNS вместо GCM Read failed: EBADF (неверный номер файла) Android: получение размера файла перед его совместным использованием (Intent.ACTION_SEND) Mockito – что делает метод проверки? Android: при просмотре полноэкранного видео youtube я отжимаю назад, а активность завершается Как удалить приложение из adb, не зная, что это имя пакета Android Button или TextView Border программно, не используя метод setBackgroundDrawable Активность OnCreate называется, когда телефон идет спать

Как использовать элементы 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, что видит пользователь) имеют элементы панели действий.