package de.danoeh.antennapod.fragment.gpodnet; import android.app.Activity; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.ActionBar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; /** * Main navigation hub for gpodder.net podcast directory */ public class GpodnetMainFragment extends Fragment { private ViewPager pager; private MainActivity activity; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View root = inflater.inflate(R.layout.pager_fragment, container, false); pager = (ViewPager) root.findViewById(R.id.pager); GpodnetPagerAdapter pagerAdapter = new GpodnetPagerAdapter(getChildFragmentManager(), getResources()); pager.setAdapter(pagerAdapter); final ActionBar actionBar = activity.getMainActivtyActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.TabListener tabListener = new ActionBar.TabListener() { @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { pager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } }; actionBar.removeAllTabs(); actionBar.addTab(actionBar.newTab() .setText(R.string.gpodnet_taglist_header) .setTabListener(tabListener)); actionBar.addTab(actionBar.newTab() .setText(R.string.gpodnet_toplist_header) .setTabListener(tabListener)); actionBar.setTitle(R.string.gpodnet_main_label); pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { super.onPageSelected(position); actionBar.setSelectedNavigationItem(position); } }); return root; } @Override public void onDestroyView() { super.onDestroyView(); activity.getMainActivtyActionBar().removeAllTabs(); activity.getMainActivtyActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); } @Override public void onAttach(Activity activity) { super.onAttach(activity); this.activity = (MainActivity) activity; } public class GpodnetPagerAdapter extends FragmentPagerAdapter { private static final int NUM_PAGES = 2; private static final int POS_TAGS = 0; private static final int POS_TOPLIST = 1; private static final int POS_SUGGESTIONS = 2; Resources resources; public GpodnetPagerAdapter(FragmentManager fm, Resources resources) { super(fm); this.resources = resources; } @Override public Fragment getItem(int i) { switch (i) { case POS_TAGS: return new TagListFragment(); case POS_TOPLIST: return new PodcastTopListFragment(); case POS_SUGGESTIONS: return new SuggestionListFragment(); default: return null; } } @Override public CharSequence getPageTitle(int position) { switch (position) { case POS_TAGS: return getString(R.string.gpodnet_taglist_header); case POS_TOPLIST: return getString(R.string.gpodnet_toplist_header); case POS_SUGGESTIONS: return getString(R.string.gpodnet_suggestions_header); default: return super.getPageTitle(position); } } @Override public int getCount() { return NUM_PAGES; } } }