Fragment嵌套ViewPager
来源:互联网 发布:转移概率矩阵计算方法 编辑:程序博客网 时间:2024/06/05 19:15
先看效果图,很多应用中都有
点击下面四个按钮,切换不同的fragment,同时第一个fragment里面又嵌套了一个ViewPager,实现了两个fragment的切换。
代码实现:
public class MainActivity extends FragmentActivity implements OnCheckedChangeListener { private RadioGroup rg_home; private RadioButton rb_home; private Fragment content; private FragmentTransaction transaction; HomeFragment homeFragment; FindFragment findFragment; OtherFragment otherFragment; MineFragment mineFragment; private int currentIndex = 0; private boolean isRecycle = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rg_home = (RadioGroup) findViewById(R.id.rb_group); rb_home = (RadioButton) findViewById(R.id.rb_home); rg_home.setOnCheckedChangeListener(this); content = new HomeFragment();// 默认创建HomeFragment transaction = getSupportFragmentManager().beginTransaction(); rb_home.setChecked(true);// 选中第一个按钮 } @Override protected void onSaveInstanceState(Bundle outState) { outState.putBoolean("isRecycle", true);// 当Activity重建的时候回执行此方法 outState.putInt("currentIndex", currentIndex);// 保存当前选中的位置 } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); isRecycle = savedInstanceState.getBoolean("isRecycle"); currentIndex = savedInstanceState.getInt("currentIndex"); } @Override protected void onResume() { super.onResume(); if (isRecycle) { ((RadioButton) (rg_home.getChildAt(currentIndex))).setChecked(true); } } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.rb_home: currentIndex = 0; if (homeFragment == null) { homeFragment = new HomeFragment(); } switchFragment(content, homeFragment); break; case R.id.rb_other: currentIndex = 1; if (otherFragment == null) { otherFragment = new OtherFragment(); } switchFragment(content, otherFragment); break; case R.id.rb_find: currentIndex = 2; if (findFragment == null) { findFragment = new FindFragment(); } switchFragment(content, findFragment); break; case R.id.rb_mine: currentIndex = 3; if (mineFragment == null) { mineFragment = new MineFragment(); } switchFragment(content, mineFragment); break; } } /** * 切换Fragment,避免每次创建新的实例 * * @param from * @param to */ public void switchFragment(Fragment from, Fragment to) { if (content != to) { content = to; FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); if (!to.isAdded()) { transaction.hide(from).add(R.id.fl_main, to).commit(); } else { // Toast.makeText(this,"直接显示",Toast.LENGTH_SHORT).show(); transaction.hide(from).show(to).commit(); } } }}
public class HomeFragment extends Fragment{ private ViewPager pager; private List<Fragment> list; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.home, null); pager = (ViewPager) view.findViewById(R.id.pager); list = new ArrayList<Fragment>(); list.add(new FragmentOne()); list.add(new FragmentTwo()); pager.setAdapter(new MyAdapter(getFragmentManager(), list)); return view; } class MyAdapter extends FragmentPagerAdapter{ private List<Fragment> list; public MyAdapter(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(); } }}
0 0
- viewPager+fragment嵌套viewPager+fragment
- ViewPager+Fragment嵌套ViewPager+Fragment
- Fragment里面嵌套ViewPager
- ViewPager+Fragment嵌套
- Fragment嵌套ViewPager
- fragment嵌套viewpager
- ViewPager嵌套Fragment
- Android ViewPager嵌套Fragment
- Fragment+Viewpager+嵌套Tablelayout+fragment
- Fragment嵌套Fragment和Viewpager
- Fragment嵌套Fragment和Viewpager
- Viewpager+Fragment嵌套Viewpager+Fragment空白页问题
- ViewPager+Fragment以及Fragment嵌套ViewPager
- ViewPager嵌套Fragment再嵌套ViewPager嵌套Fragment
- Android解决ViewPager嵌套Fragment,Fragment嵌套ViewPager滑动冲突
- Android Fragment嵌套ViewPager,ViewPager嵌套多个Fragment
- Android解决ViewPager嵌套Fragment,Fragment嵌套ViewPager滑动冲突
- fragment嵌套viewpager viewpager嵌套fragment 的bug
- 数据中心(IDC)基础设施如何适应未来IT需求变化的要求
- HTML中各标签属性
- YUV422转YUV420P
- 筛选法选素数
- 深拷贝和浅拷贝
- Fragment嵌套ViewPager
- 【Hadoop基础】hadoop fs 命令
- 源码分析—String equals方法
- 设计模式系列:享元模式
- MongoDB 常用管理
- [Git] 第五回 Git日志
- Binary XML file line #3: <item> tag requires a 'drawable' attribute or child tag defining a drawable
- 设计模式系列:桥梁模式
- openGL画三角形---openGL学习笔记(四)