1.初始化Fragment
private void initFragment() {
String[] mTitles = getResources().getStringArray(R.array.main_titles);
BaseFragment[] fragments = new BaseFragment[mTitles.length];
fragments[0] = NewsFragment.getInstance();
fragments[1] = VideoFragment.getInstance();
fragments[2] = GirlFragment.getInstance();
fragments[3] = MineFragment.getInstance();
BaseFragmentAdapter mAdapter = new BaseFragmentAdapter(getSupportFragmentManager(), fragments);
mViewPager.setAdapter(mAdapter);
mViewPager.setPageMargin(SettingUtil.dip2px(this, 16)); // 设置页面间距
mViewPager.addOnPageChangeListener(this);
mViewPager.setCurrentItem(currentTabPosition); // private int currentTabPosition = 0;
mNews.setSelected(true);
}
2.新建NewsFragment
package com.huading.baselhz;
import com.huading.baselhz.base.BaseFragment;
/**
* 作者:LHZ on 2017/5/3 17:28
* 界面:
*/
public class NewsFragment extends BaseFragment {
public static NewsFragment getInstance() {
NewsFragment newsFragment = new NewsFragment();
return newsFragment;
}
@Override
protected int getLayoutId() {
return 0;
}
@Override
protected void initView() {
}
@Override
protected void lazyFetchData() {
}
}
3.新建BaseFragmentAdapter
package com.huading.baselhz.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
import com.huading.baselhz.base.BaseFragment;
/**
* Created by LHZ on 2017/3/1.
* 通用的FragmentAdapter
*/
public class BaseFragmentAdapter extends FragmentPagerAdapter {
private FragmentManager fm;
BaseFragment[] fragmentList;
private String[] mTitles;
public BaseFragmentAdapter(FragmentManager fm, BaseFragment[] fragmentList) {
super(fm);
this.fm = fm;
this.fragmentList = fragmentList;
}
public BaseFragmentAdapter(FragmentManager fm, BaseFragment[] fragmentList, String[] mTitles) {
super(fm);
this.fm = fm;
this.fragmentList = fragmentList;
this.mTitles = mTitles;
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles == null ? "" : mTitles[position];
}
@Override
public Fragment getItem(int position) {
return fragmentList[position];
}
@Override
public int getCount() {
if(fragmentList == null) return 0;
return fragmentList.length;
}
/**
* 这边并没有创建销毁过程,只创建一次
* @param container
* @param position
* @return
*/
@Override
public Fragment instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
fm.beginTransaction().show(fragment).commit();
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Fragment fragment = fragmentList[position];
fm.beginTransaction().hide(fragment).commit();
}
}
4.对viewPager设置监听,implements ViewPager.OnPageChangeListener
mViewPager.addOnPageChangeListener(this);
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
//Empty
}
@Override
public void onPageSelected(int position) {
resetTab();
switch (position) {
case 0:
mNews.setSelected(true);
break;
case 1:
mVideo.setSelected(true);
break;
case 2:
mGirl.setSelected(true);
break;
case 3:
mMine.setSelected(true);
break;
default:
//其他
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
//Empty
}
初始化tab
private void resetTab() {
mNews.setSelected(false);
mVideo.setSelected(false);
mGirl.setSelected(false);
mMine.setSelected(false);
}
5.设置按钮点击事件
@OnClick({R.id.news, R.id.video, R.id.girl, R.id.mine})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.news:
mViewPager.setCurrentItem(0, false);
break;
case R.id.video:
mViewPager.setCurrentItem(1, false);
break;
case R.id.girl:
mViewPager.setCurrentItem(2, false);
break;
case R.id.mine:
mViewPager.setCurrentItem(3, false);
break;
default:
break;
}
}