package com.example.viewpagerandtabdemo;
import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener, OnPageChangeListener{
/**
* 顶部Tab的title
*/
private String [] mTabTitles;
/**
* ViewPager对象的引用
*/
private ViewPager mViewPager;
/**
* 装载Fragment的容器,我们的每一个界面都是一个Fragment
*/
private List<Fragment> mFragmentList;
/**
* ActionBar对象的引用
*/
private ActionBar mActionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = (ViewPager) findViewById(R.id.viewPager);
mFragmentList = new ArrayList<Fragment>();
//设置Adapter
mViewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager(), mFragmentList));
//设置监听
mViewPager.setOnPageChangeListener(this);
//从资源文件在获取Tab的title
mTabTitles = getResources().getStringArray(R.array.tab_title);
//获取Action实例我们使用getSupportActionBar()方法
mActionBar = getSupportActionBar();
//隐藏Title
mActionBar.setDisplayShowTitleEnabled(false);
//隐藏Home logo
mActionBar.setDisplayShowHomeEnabled(false);
//设置ActionBar的导航模式为Tab
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//为ActionBar添加Tab并设置TabListener
for(int i=0; i<mTabTitles.length; i++){
ActionBar.Tab tab = mActionBar.newTab();
tab.setText(mTabTitles[i]);
tab.setTabListener(this);
mActionBar.addTab(tab, i);
}
//将Fragment加入到List中,并将Tab的title传递给Fragment
for(int i=0; i<mTabTitles.length; i++){
Fragment fragment = new ItemFragment();
Bundle args = new Bundle();
args.putString("arg", mTabTitles[i]);
fragment.setArguments(args);
mFragmentList.add(fragment);
}
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
//点击ActionBar Tab的时候切换不同的Fragment界面
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
//滑动ViewPager的时候设置相对应的ActionBar Tab被选中
mActionBar.setSelectedNavigationItem(arg0);
}
}
package com.example.viewpagerandtabdemo;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragment;
public class ItemFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View contextView = inflater.inflate(R.layout.fragment_item, container, false);
TextView mTextView = (TextView) contextView.findViewById(R.id.textview);
//获取Activity传递过来的参数
Bundle mBundle = getArguments();
String title = mBundle.getString("arg");
mTextView.setText(title);
return contextView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
package com.example.viewpagerandtabdemo;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
public class TabPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> list;
//构造函数
public TabPagerAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int arg0) {
return list.get(arg0);
}
@Override
public int getCount() {
return list.size();
}
}
插件用的是github上的actionbarsherlock插件。
本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5438622.html,如需转载请自行联系原作者