package tools.rulerbug.www.Base;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.viewpagerindicator.TabPageIndicator;
import com.viewpagerindicator.TitlePageIndicator;
import java.util.ArrayList;
import tools.rulerbug.www.Adapter.MyFragemntPagerAdapter;
import tools.rulerbug.www.R;
public abstract class BaseTabFragment extends Fragment {
private View mView;
private ViewPager mViewPager;
private TabPageIndicator mTitles;
private MyFragemntPagerAdapter mMyAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (mView == null) {
mView = inflater.inflate(R.layout.fragment_base_tab, null);
}
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
parent.removeView(mView);
}
return mView;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initUI(view);
super.onViewCreated(view, savedInstanceState);
}
private void initUI(View view) {
if (mTitles == null) {
mTitles = (TabPageIndicator) view.findViewById(R.id.titles);
}
if (mViewPager == null) {
mViewPager = (ViewPager) view.findViewById(R.id.view_pager);
//Set the pager with an adapter
}
if (mMyAdapter == null) {
mMyAdapter = new MyFragemntPagerAdapter(getChildFragmentManager());
//这里一定是getChildFragmentManager()
mViewPager.setAdapter(mMyAdapter);
addAllTab(mMyAdapter);
}
mTitles.setViewPager(mViewPager);
}
protected abstract void addAllTab(MyFragemntPagerAdapter myAdapter);
}
MyFragemntPagerAdapter 要实现这个方法,用这个方法添加fragment和title
private ArrayList<String> titles;
private ArrayList<Fragment> fragmentList;
public void addTab(String title, Fragment fragment) {
if (titles == null) {
titles = new ArrayList<>();
}
if (fragmentList == null) {
fragmentList = new ArrayList<>();
}
titles.add(title);
fragmentList.add(fragment);
notifyDataSetChanged();
}