| package ${packageName}; |
| |
| import java.util.Locale; |
| |
| import <#if appCompat>android.support.v7.app.ActionBarActivity<#else>android.app.Activity</#if>; |
| import android.<#if appCompat>support.v7.</#if>app.ActionBar; |
| import android.<#if appCompat>support.v4.</#if>app.Fragment; |
| import android.<#if appCompat>support.v4.</#if>app.FragmentManager; |
| import android.<#if appCompat>support.v4.</#if>app.FragmentTransaction; |
| import android.support.${(appCompat)?string('v4','v13')}.app.FragmentPagerAdapter; |
| import android.os.Bundle; |
| import android.support.v4.view.ViewPager; |
| import android.view.Gravity; |
| import android.view.LayoutInflater; |
| import android.view.Menu; |
| import android.view.MenuItem; |
| import android.view.View; |
| import android.view.ViewGroup; |
| import android.widget.TextView; |
| <#if applicationPackage??>import ${applicationPackage}.R;</#if> |
| |
| public class ${activityClass} extends ${(appCompat)?string('ActionBar','')}Activity<#if features == 'tabs'> implements ActionBar.TabListener</#if> { |
| |
| /** |
| * The {@link android.support.v4.view.PagerAdapter} that will provide |
| * fragments for each of the sections. We use a |
| * {@link FragmentPagerAdapter} derivative, which will keep every |
| * loaded fragment in memory. If this becomes too memory intensive, it |
| * may be best to switch to a |
| * {@link android.support.${(appCompat)?string('v4','v13')}.app.FragmentStatePagerAdapter}. |
| */ |
| SectionsPagerAdapter mSectionsPagerAdapter; |
| |
| /** |
| * The {@link ViewPager} that will host the section contents. |
| */ |
| ViewPager mViewPager; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| setContentView(R.layout.${layoutName}); |
| |
| <#if features == 'tabs'> |
| // Set up the action bar. |
| final ActionBar actionBar = get${Support}ActionBar(); |
| actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);</#if> |
| |
| // Create the adapter that will return a fragment for each of the three |
| // primary sections of the activity. |
| mSectionsPagerAdapter = new SectionsPagerAdapter(get${Support}FragmentManager()); |
| |
| // Set up the ViewPager with the sections adapter. |
| mViewPager = (ViewPager) findViewById(R.id.pager); |
| mViewPager.setAdapter(mSectionsPagerAdapter); |
| |
| <#if features == 'tabs'> |
| // When swiping between different sections, select the corresponding |
| // tab. We can also use ActionBar.Tab#select() to do this if we have |
| // a reference to the Tab. |
| mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { |
| @Override |
| public void onPageSelected(int position) { |
| actionBar.setSelectedNavigationItem(position); |
| } |
| }); |
| |
| // For each of the sections in the app, add a tab to the action bar. |
| for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { |
| // Create a tab with text corresponding to the page title defined by |
| // the adapter. Also specify this Activity object, which implements |
| // the TabListener interface, as the callback (listener) for when |
| // this tab is selected. |
| actionBar.addTab( |
| actionBar.newTab() |
| .setText(mSectionsPagerAdapter.getPageTitle(i)) |
| .setTabListener(this)); |
| } |
| </#if> |
| } |
| |
| <#include "include_options_menu.java.ftl"> |
| |
| <#if features == 'tabs'>@Override |
| public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { |
| // When the given tab is selected, switch to the corresponding page in |
| // the ViewPager. |
| mViewPager.setCurrentItem(tab.getPosition()); |
| } |
| |
| @Override |
| public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { |
| } |
| |
| @Override |
| public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { |
| }</#if> |
| |
| /** |
| * A {@link FragmentPagerAdapter} that returns a fragment corresponding to |
| * one of the sections/tabs/pages. |
| */ |
| public class SectionsPagerAdapter extends FragmentPagerAdapter { |
| |
| public SectionsPagerAdapter(FragmentManager fm) { |
| super(fm); |
| } |
| |
| @Override |
| public Fragment getItem(int position) { |
| // getItem is called to instantiate the fragment for the given page. |
| // Return a PlaceholderFragment (defined as a static inner class below). |
| return PlaceholderFragment.newInstance(position + 1); |
| } |
| |
| @Override |
| public int getCount() { |
| // Show 3 total pages. |
| return 3; |
| } |
| |
| @Override |
| public CharSequence getPageTitle(int position) { |
| Locale l = Locale.getDefault(); |
| switch (position) { |
| case 0: |
| return getString(R.string.title_section1).toUpperCase(l); |
| case 1: |
| return getString(R.string.title_section2).toUpperCase(l); |
| case 2: |
| return getString(R.string.title_section3).toUpperCase(l); |
| } |
| return null; |
| } |
| } |
| |
| <#include "include_fragment.java.ftl"> |
| |
| } |