package com.m.ui.activity;
import java.util.ArrayList;
import java.util.List;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import com.m.R;
import com.m.support.adapter.FragmentPagerAdapter;
import com.m.ui.fragment.ABaseFragment;
public abstract class AViewpagerActivity extends BaseActivity implements OnPageChangeListener {
List<ABaseFragment> fragments;
private int currentIndex = 0;
private String[] pagerTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_viewpagers);
pagerTitle = getResources().getStringArray(setViewPagerTitles());
fragments = new ArrayList<ABaseFragment>();
if (savedInstanceState == null) {
currentIndex = defaultSelectedIndex();
setViewPagerFragments(fragments);
} else {
currentIndex = savedInstanceState.getInt("index", currentIndex);
for (String title : pagerTitle) {
ABaseFragment fragment = (ABaseFragment) getFragmentManager().findFragmentByTag(title);
if (fragment != null)
fragments.add(fragment);
}
}
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setOnPageChangeListener(this);
viewPager.setAdapter(new MyViewPagerAdapter(getFragmentManager()));
// TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);
// if (showIndicator()) {
// indicator.setViewPager(viewPager);
// indicator.setOnPageChangeListener(this);
// }
// else {
// viewPager.setOnPageChangeListener(this);
// indicator.setVisibility(View.GONE);
// }
viewPager.setCurrentItem(currentIndex);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("index", currentIndex);
}
class MyViewPagerAdapter extends FragmentPagerAdapter {
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
return fragments.get(arg0);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return pagerTitle[position];
}
@Override
protected String makeFragmentName(int position) {
return pagerTitle[position];
}
}
protected int defaultSelectedIndex() {
return 0;
}
protected boolean showIndicator() {
return true;
}
protected abstract int setViewPagerTitles();
protected abstract void setViewPagerFragments(List<ABaseFragment> fragmentList);
@Override
public void onPageScrollStateChanged(int state) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
currentIndex = position;
}
protected ViewPager getViewPager() {
return (ViewPager) findViewById(R.id.viewPager);
}
protected List<ABaseFragment> getFragments() {
return fragments;
}
public ABaseFragment getCurrentFragment() {
if (fragments.size() < currentIndex)
return null;
return fragments.get(currentIndex);
}
}