fragment的切换与隐藏(无需重建)
来源:互联网 发布:java template模板 编辑:程序博客网 时间:2024/06/16 15:57
一、结合RadioButton使用
1、默认展示主页的fragment
private void initBaseViews(){ mFragmentManager = getSupportFragmentManager(); mFragmentManager.beginTransaction().add(R.id.relativeLayout, mMianFragment).commit();}2、RadioButton的点击监听事件(FragmentTransaction只能commit一次,否则,会导致
java.lang.IllegalStateException: commit already called,
因此,只能作为局部变量,每次commit之前都需要调用FragmentManager.beginTransaction())每次按下RadioButton时,都需要先隐藏所有的fragment,然后再展示其中的某一个
@Overridepublic void onCheckedChanged(RadioGroup radioGroup, int i) { FragmentTransaction transaction = mFragmentManager.beginTransaction(); hideFragments(transaction); switch (i) { case R.id.radioButton_main: if (mMianFragment == null) { mMianFragment = MainFragment.newInstance(); transaction.add(R.id.relativeLayout, mMianFragment); } else { transaction.show(mMianFragment); } break; case R.id.radioButton_order: if (mOrderFragment == null) { mOrderFragment = OrderFragment.newInstance(); transaction.add(R.id.relativeLayout, mOrderFragment); } else { transaction.show(mOrderFragment); } break; case R.id.radioButton_discovery: if (mDiscoveryFragment == null) { mDiscoveryFragment = DiscoveryFragment.newInstance(); transaction.add(R.id.relativeLayout, mDiscoveryFragment); } else { transaction.show(mDiscoveryFragment); } break; case R.id.radioButton_mine: if (mMineFragment == null) { mMineFragment = mMineFragment.newInstance(); transaction.add(R.id.relativeLayout, mMineFragment); } else { transaction.show(mMineFragment); } break; } transaction.commit();}3、fragment的隐藏
private void hideFragments(FragmentTransaction transaction) { if (mMianFragment != null) { transaction.hide(mMianFragment); } if (mOrderFragment != null) { transaction.hide(mOrderFragment); } if (mDiscoveryFragment != null) { transaction.hide(mDiscoveryFragment); } if (mMineFragment != null) { transaction.hide(mMineFragment); }}
二、结合viewpager使用
1、构建viewpager的适配器(继承自FragmentPagerAdapter)
public class AdapterViewPager extends FragmentPagerAdapter { private List<Fragment> fragmentList; public AdapterViewPager(FragmentManager fm, List<Fragment> fragmentList) { super(fm); this.fragmentList = fragmentList; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); }}2、给viewpager设置适配器(viewpager一般搭配tablayout使用,这里没做设置)
private void initBaseViews() { List<Fragment> fragmentList = new ArrayList<>(); mInternalFragment = new InternalFragment(); mAbroadFragment = new AbroadFragment(); fragmentList.add(mInternalFragment); fragmentList.add(mAbroadFragment); AdapterViewPager adapter = new AdapterViewPager(getActivity().getSupportFragmentManager(), fragmentList); mViewPager.setAdapter(adapter);}
阅读全文
0 0
- fragment的切换与隐藏(无需重建)
- Fragment切换 隐藏 显示
- Fragment的隐藏与显示
- Fragment的隐藏与显示
- fragment 的隐藏及界面切换的效果
- android中在切换fragment时,怎样做到无需重复加载数据的方法。
- Fragment切换和隐藏,显示(show,hide)
- ListView控制Fragment的显示与隐藏
- Fragment的显示与隐藏及demo
- Fragment的显示与隐藏问题
- android中fragment的获取与隐藏
- Fragment的使用(切换)
- android横竖屏切换与activity的销毁重建
- android横竖屏切换与activity的销毁重建
- Fragment切换与Fragment间传值
- Fragment隐藏与显示
- Fragment隐藏与显示
- android 密码显示与隐藏的切换
- 计蒜客-扫雷游戏
- 第四周 单链表应用
- JDBC往mysql里存入中文的问题
- <mvc:annotation-driven /> 作用
- jeecmsv8 shiro 分析
- fragment的切换与隐藏(无需重建)
- HDU 3549:Flow Problem
- mapreduce计算平均值
- 今日头条频道管理
- PHP链接数据库
- abs() -- PHP取绝对值函数
- 软工视频总结(一)
- JAVA 将文件压缩为zip文件
- HDU 1028 Ignatius and the Princess III (母函数模板)