Project: ActionBarSherlock
/*
 * Copyright (C) 2011 The Android Open Source Project 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 */
 
package com.actionbarsherlock.sample.knownbugs; 
 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.view.ViewPager; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import com.actionbarsherlock.app.ActionBar; 
import com.actionbarsherlock.app.SherlockFragment; 
import com.actionbarsherlock.app.SherlockFragmentActivity; 
 
import static android.support.v4.view.ViewPager.OnPageChangeListener; 
import static android.view.Gravity.CENTER; 
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; 
import static com.actionbarsherlock.app.ActionBar.NAVIGATION_MODE_TABS; 
import static com.actionbarsherlock.app.ActionBar.TabListener; 
 
public class Issue240 extends SherlockFragmentActivity implements OnPageChangeListener, TabListener { 
    private static final int COUNT = 10
 
    ViewPager mPager; 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.issue240); 
 
        mPager = (ViewPager)findViewById(R.id.pager); 
        mPager.setAdapter(new MyAdapter(getSupportFragmentManager())); 
        mPager.setOnPageChangeListener(this); 
 
        ActionBar ab = getSupportActionBar(); 
        ab.setNavigationMode(NAVIGATION_MODE_TABS); 
        for (int i = 1; i <= COUNT; i++) { 
            ab.addTab(ab.newTab().setText("Tab " + i).setTabListener(this)); 
        } 
    } 
 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
    } 
 
    @Override 
    public void onPageSelected(int position) { 
        getSupportActionBar().setSelectedNavigationItem(position); 
    } 
 
    @Override 
    public void onPageScrollStateChanged(int state) { 
    } 
 
    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
        mPager.setCurrentItem(tab.getPosition()); 
    } 
 
    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 
    } 
 
    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 
    } 
 
    public static class MyAdapter extends FragmentStatePagerAdapter { 
        public MyAdapter(FragmentManager fm) { 
            super(fm); 
        } 
 
        @Override 
        public int getCount() { 
            return COUNT; 
        } 
 
        @Override 
        public Fragment getItem(int position) { 
            return BoringFragment.newInstance(position + 1); 
        } 
    } 
 
    public static class BoringFragment extends SherlockFragment { 
        int mNum; 
 
        /**
         * Create a new instance of CountingFragment, providing "num" 
         * as an argument. 
         */
 
        static BoringFragment newInstance(int num) { 
          BoringFragment f = new BoringFragment(); 
 
            // Supply num input as an argument. 
            Bundle args = new Bundle(); 
            args.putInt("num", num); 
            f.setArguments(args); 
 
            return f; 
        } 
 
        /**
         * When creating, retrieve this instance's number from its arguments. 
         */
 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            mNum = getArguments() != null ? getArguments().getInt("num") : 1
        } 
 
        /**
         * The Fragment's UI is just a simple text view showing its 
         * instance number. 
         */
 
        @Override 
        public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                                 Bundle savedInstanceState) { 
            TextView tv = new TextView(getActivity()); 
            tv.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)); 
            tv.setText("Fragment #" + mNum); 
            tv.setGravity(CENTER); 
            return tv; 
        } 
 
    } 
}