这个组合是用ViewPager管理fragment,没有TabLayout,可以使用其他诸如按钮和文本控件来控制。
一、FragmentsActivity
/**
* ViewPager+FragmentPagerAdapter
*/
public class FragmentsActivity extends AppCompatActivity {
private ViewPager mViewPager;
private MyFragmentAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
initView();
}
private void initView() {
mViewPager= (ViewPager) findViewById(R.id.vp_container);
adapter=new MyFragmentAdapter(getSupportFragmentManager());
mViewPager.setOffscreenPageLimit(4);
mViewPager.setAdapter(adapter);
}
}
二、MyFragmentAdapter
/**
* FragmentPagerAdapter
* ViewPager加载fragment时使用
* 主要实现两个方法,加一个构造方法,可以在构造方法中传一个构造好的fragment集合和context
* Created by Devin Chen on 2016/12/17.
*/
public class MyFragmentAdapter extends FragmentPagerAdapter {
private String[] titles={"天九","地八","人七","和五"};//构造传递给fragment用于不同显示内容的参数
public MyFragmentAdapter(FragmentManager fm) {
super(fm);
}
/**
* 根据id生成fragment,写好这个就好了
* @param position
* @return
*/
@Override
public Fragment getItem(int position) {
Fragment fragment=new MyFragment();
Bundle bundle=new Bundle();
bundle.putString("title",titles[position]);
fragment.setArguments(bundle);
return fragment;
}
/**
* 可以使已知数,也可以是一个集合的长度
* @return
*/
@Override
public int getCount() {
return titles.length;
}
}
三、MyFragment
/**
* A simple {@link Fragment} subclass.
*/
public class MyFragment extends Fragment {
private TextView textView;
public MyFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_my, container, false);
initView(view);
return view;
}
private void initView(View view) {
String title= (String) getArguments().get("title");
textView= (TextView) view.findViewById(R.id.txt_title);
textView.setText(title);
}
}