对Fragment的封装和fragment的显示隐藏回退栈管理
来源:互联网 发布:美国西密歇根大学 知乎 编辑:程序博客网 时间:2024/06/05 07:34
废话不多说,直接上代码
package test.bwie.jiyun.com.ins7566.ipandatv.widget.manger;import android.os.Bundle;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import test.bwie.jiyun.com.ins7566.ipandatv.App;import test.bwie.jiyun.com.ins7566.ipandatv.base.BaseFragment;import static test.bwie.jiyun.com.ins7566.ipandatv.App.lastFragment;/** * Created by suyun on 2017/7/28. */public class FragmentBuilder { private FragmentManager fragmentManager; private BaseFragment baseFragment; private FragmentTransaction fragmentTransaction; private String simpleName; private FragmentBuilder() { init(); } private static FragmentBuilder fragmentBuilder; public static synchronized FragmentBuilder getInstance() { if (fragmentBuilder == null) { fragmentBuilder = new FragmentBuilder(); } return fragmentBuilder; } private void init() { //初始化并得到fragmentManger管理者对象 fragmentManager = App.activity.getSupportFragmentManager(); } public FragmentBuilder start(Class<? extends BaseFragment> baseclass, int ViewID) { //开始事务 fragmentTransaction = fragmentManager.beginTransaction(); //要跳转fragment的类 simpleName = baseclass.getSimpleName(); //用tag标记 baseFragment = (BaseFragment) fragmentManager.findFragmentByTag(simpleName); if (baseFragment == null) { try { baseFragment = baseclass.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } //添加到事务 fragmentTransaction.add(ViewID, baseFragment, simpleName); } if (lastFragment != null) { fragmentTransaction.hide(lastFragment); } //展示当前页面 fragmentTransaction.show(baseFragment); //添加到回退栈 fragmentTransaction.addToBackStack(simpleName); return this; } //传参 public FragmentBuilder setParms(Bundle bundle) { baseFragment.setParams(bundle); return this; } public BaseFragment builder() { //赋给上一个页面 lastFragment = baseFragment; //提交事务 fragmentTransaction.commit(); return baseFragment; } //清空 public static void clean() { fragmentBuilder = null; }}
这个里面完全封装了fragment的跳转,切换,显示隐藏,回退栈管理
阅读全文
1 0
- 对Fragment的封装和fragment的显示隐藏回退栈管理
- fragment的显示 隐藏
- ApiDemos---Fragment的显示和隐藏
- 关于fragment显示和隐藏的说明
- Fragment软键盘的显示和隐藏
- radioGroup+fragment的显示和隐藏
- Fragment的隐藏和
- Fragment的隐藏与显示
- Fragment的隐藏与显示
- Fragment的隐藏于显示
- Android Fragment管理类,操作Fragment的增加、删除、替换、隐藏、显示等
- Activity和fragment的封装
- 获取网络状态以及Fragment的隐藏和显示使用
- ListView控制Fragment的显示与隐藏
- Fragment的显示与隐藏及demo
- Fragment的显示与隐藏问题
- Android Fragment隐藏显示调用的方法
- fragment嵌套fragment的管理
- Cutting Sticks UVA
- Arbitrage(Floyd)
- Redis Cluster:Too many Cluster redirections异常
- div 不能占满整个页面
- NYOJ975
- 对Fragment的封装和fragment的显示隐藏回退栈管理
- C++ 基础知识一
- 学习总结:java构建器模式
- 类和对象与继承
- H
- UVALive
- 类型转换
- c到c++的过渡
- 图片加载框架Picasso和Glide