Фрагмент на вкладке панели действий и ViewPager

Можно ли использовать фрагмент как на вкладках планшета Actionbar, так и на ViewPager телефона? Похоже, что телефон использует библиотеку поддержки и несовместим с TabListener на панели действий. Есть ли способ заставить оба использовать один и тот же фрагмент?

Единственный возможный обходной путь, который я видел до сих пор, — это это .

Спасибо


person Metallicraft    schedule 08.11.2011    source источник


Ответы (4)


Конечно, ознакомьтесь с образцом ActionBarTabsPager в исходном коде библиотеки совместимости. Вам необходимо реализовать оба интерфейса в вашем адаптере для управления переключением вкладок и пейджингом. Что-то вроде этого:

public class TabsPagerAdapter extends FragmentPagerAdapter implements
        ViewPager.OnPageChangeListener, ActionBar.TabListener {
        // implement both
}

Вам нужно добавить такие вкладки (используя библиотеку поддержки/совместимости):

getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

viewPager = (ViewPager) findViewById(R.id.content);
tabsAdapter = new TabsPagerAdapter(this, getSupportActionBar(),
                viewPager);
ActionBar.Tab tab = getSupportActionBar().newTab();
MyFragment f = new MyFragment();
tabsAdapter.addTab(tab, f);
person Nikolay Elenkov    schedule 08.11.2011
comment
Это хорошо, но вкладки не на панели действий на планшете. - person Metallicraft; 08.11.2011
comment
Естественно, вам нужно использовать API-интерфейсы ActionBar для добавления вкладок. Смотрите исправленное сообщение. Это из реального проекта, поэтому я уверен, что он работает :). - person Nikolay Elenkov; 08.11.2011
comment
-сан! Омоширои!. Поскольку ваш первый ответ о вашем имени поразил меня... сегодня, когда я читаю ваш второй ответ, мой планшет уведомляет меня, что у меня есть обновление для установленного приложения. О чудо... WWWJDIC. :-) ...и TabPager там тоже отлично работает! У меня также установлен распознаватель кандзи. Спасибо за вашу помощь и за ваши приложения! - person Metallicraft; 08.11.2011
comment
getSupportActionBar() находится в библиотеке ActionBarSherlock, а не в библиотеке совместимости... - person GBouerat; 25.04.2012
comment
Любой, кто ищет полное решение, должен попробовать это (у вас должен быть ADT v20 и выше) - Меню > Проект > Выберите проект приложения Android + заполните свойства проекта и выберите min-sdk для API 14 > Нажмите «Далее» > [необязательно] создайте значок запуска › Нажмите «Далее» › «Отметьте «Создать активность» и выберите «Бланкактивити» › «Нажмите «Далее» › «Выберите тип навигации: Tabs + Swipe» › Нажмите «Готово». Готово, у вас есть рабочий пример с tab + viewpager - person Hossain Khan; 09.10.2012

http://developer.android.com/training/backward-совместимый-ui/index.html

Это хороший способ использовать Fragment из библиотеки совместимости с ActionBar.Tab и TabListener.

person GBouerat    schedule 25.04.2012

Вот пример реализации TabsPagerAdapter https://wwwjdic.googlecode.com/svn-history/r684/branches/2.0/wwwjdic/src/org/nick/wwwjdic/TabsPagerAdapter.java из ответа Николая Еленкова.

person Nicramus    schedule 29.12.2013

Идея состоит в том, чтобы использовать android-support-v13.jar. Этот файл включает FragmentPagerAdapter для собственных фрагментов, а также ViewPager.

person Petr    schedule 06.03.2014