动态管理fragment
来源:互联网 发布:淘宝里面怎么投诉卖家 编辑:程序博客网 时间:2024/05/21 13:22
/**
* 该方法用于Fragment切换
* @param containerId 容器ID
* @param fragmentClass 要切换的Fragment 目标Fragment
* @param bundle 跳转Fragment是要传递的参数
* @param isReplace 是否替换当前Fragment true:replace替换 false :hind 隐藏
* @param isBack 该Fragment是否要添加至回退栈
*/
public void changFragment(int containerId, Class<? extends BaseFragment> fragmentClass, Bundle bundle, boolean isReplace, boolean isBack){
//获取Fragment管理器
FragmentManager manager = getSupportFragmentManager();
//获取Fragment类名 下面会用到类名做Tag
String fragmentName = fragmentClass.getSimpleName();
//开启事务
FragmentTransaction transaction = manager.beginTransaction();
//通过Tag来查找Fragment 如果查找到返回的就是该Fragment对象 否则是null 代表该Fragment没有被创建过
BaseFragment currentFragment = (BaseFragment) manager.findFragmentByTag(fragmentName);
//如果Fragment为null 就通过Java动态代理创建对应的Fragment对象
if(currentFragment == null){
try {
//通过Java动态代理创建Fragment
currentFragment = fragmentClass.newInstance();
transaction.add(containerId,currentFragment,fragmentName);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
//isReplace 为true代表替换
if(isReplace) {
transaction.replace(containerId, currentFragment, fragmentName);
} else {
//隐藏上一个Fragment
if(lastFragment != null)
transaction.hide(lastFragment);
//显示当前的Fragment
transaction.show(currentFragment);
}
//bundle 不等于null代表要传递参数
if(bundle != null) {
currentFragment.setParams(bundle);
}
//isBack为true是添加至回退栈
if (isBack){
transaction.addToBackStack(fragmentName);
}
transaction.commit();
lastFragment = currentFragment;
}
* 该方法用于Fragment切换
* @param containerId 容器ID
* @param fragmentClass 要切换的Fragment 目标Fragment
* @param bundle 跳转Fragment是要传递的参数
* @param isReplace 是否替换当前Fragment true:replace替换 false :hind 隐藏
* @param isBack 该Fragment是否要添加至回退栈
*/
public void changFragment(int containerId, Class<? extends BaseFragment> fragmentClass, Bundle bundle, boolean isReplace, boolean isBack){
//获取Fragment管理器
FragmentManager manager = getSupportFragmentManager();
//获取Fragment类名 下面会用到类名做Tag
String fragmentName = fragmentClass.getSimpleName();
//开启事务
FragmentTransaction transaction = manager.beginTransaction();
//通过Tag来查找Fragment 如果查找到返回的就是该Fragment对象 否则是null 代表该Fragment没有被创建过
BaseFragment currentFragment = (BaseFragment) manager.findFragmentByTag(fragmentName);
//如果Fragment为null 就通过Java动态代理创建对应的Fragment对象
if(currentFragment == null){
try {
//通过Java动态代理创建Fragment
currentFragment = fragmentClass.newInstance();
transaction.add(containerId,currentFragment,fragmentName);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
//isReplace 为true代表替换
if(isReplace) {
transaction.replace(containerId, currentFragment, fragmentName);
} else {
//隐藏上一个Fragment
if(lastFragment != null)
transaction.hide(lastFragment);
//显示当前的Fragment
transaction.show(currentFragment);
}
//bundle 不等于null代表要传递参数
if(bundle != null) {
currentFragment.setParams(bundle);
}
//isBack为true是添加至回退栈
if (isBack){
transaction.addToBackStack(fragmentName);
}
transaction.commit();
lastFragment = currentFragment;
}
阅读全文
0 0
- 动态管理fragment
- 深入分析动态管理Fragment
- Android 深入分析动态管理Fragment
- 安卓动态管理Fragment深入分析
- 关于FragmentManager动态管理Fragment时Fragment生命周期的探
- 关于FragmentManager动态管理Fragment时Fragment生命周期的探究
- 关于FragmentManager动态管理Fragment时Fragment生命周期的探究
- 关于FragmentManager动态管理Fragment时Fragment生命周期的探究
- 【Fragment精深系列6】关于FragmentManager动态管理Fragment时Fragment生命周期的探究
- Android百日程序: Fragment动态管理和生命期
- Android百日程序: Fragment动态管理和生命期
- Android Fragment---管理Fragment
- Android Fragment---管理Fragment
- 动态Fragment
- 动态Fragment
- 动态fragment
- 管理fragment
- Fragment管理
- Windows 7 通过无线网卡,模拟Wifi,实现手机,电脑等无线设备共享上网
- 关于Asp.net中static与ViewState使用的探讨
- Web前端开发中的MCRV模式
- ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormView。
- linux同时安装python2.6和python2.7
- 动态管理fragment
- TreeView 递归 无限级 绑定数据
- 泛型方法的使用
- CheckedListBox控件如何删除用户选择的多项Item?
- Ajax ToolKit --- ModelPopupExtender报错:Sys.InvalidOperationException: Handler was not added through the Sys.UI.DomE
- java spring关于缓存的使用
- ScriptManager.RegisterStartupScript方法
- SQL子句执行顺序和Join的一点总结
- springBoot注解的应用