Fragment的使用(切换)
来源:互联网 发布:2008年科比总决赛数据 编辑:程序博客网 时间:2024/06/05 15:47
安卓开发中,几乎所有APP模块间的切换都是用Fragment来实现。
本文不论述Fragment的基础理论知识,直接概述Fragment的使用方法(仅切换)。
1、replace(替换)
public static void replaceFragment(Activity activity,Fragment fragment) {
android.app.FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
transaction.replace(R.id.main_frame_layout,fragment);
transaction.commit();
}
注意:
getSupportFragmentManager()这个方法只有在FragmentActivity中才可以使用(v-4包);
如果你的Activity只继承Activity ( app包),使用getFragmentManager();
2、show和hide(显示和隐藏)
private static Fragment[] fragments = new Fragment[2];
public static void showAndHideFragment(Activity activity,String fragmentName) {
int type = 0;
if(fragmentName.equals("HOME")){
type = 0;
}
if(fragmentName.equals("SHOP")){
type = 1;
}
//如果被添加的Fragment就是已经显示的Fragment,就不执行操作
if(lastIndex == type){
return;
}
android.app.FragmentTransaction transaction = activity.getFragmentManager().beginTransaction();
//如果容器中有别的Fragment,就隐藏之前的Fragment
if(lastIndex != -1){
//隐藏之前的Fragment
transaction.hide(fragments[lastIndex]);
}
//说明当前要添加的Fragment是第一次添加,创建新的Fragment对象
if(fragments[type] == null){
switch (type){
case 0:
fragments[0] = new HomeFragment();
break;
case 1:
fragments[1] = new ShopFragment();
break;
}
transaction.add(R.id.main_frame_layout,fragments[type]);
}else{ //说明Fragment已经创建过,并且被隐藏起来了
//显示隐藏的Fragment
transaction.show(fragments[type]);
}
transaction.commit();
lastIndex = type;
}
上述两个方法进行了简单的封装,可以拿过去直接用。
3、两者之间的区别
用add方式实现fragment的效果就是:切换fragment时不会重新创建,是什么样子切换回来还是什么样子;
用replace的效果就是:切换fragment时每次都会重新创建初始化。
- Fragment的使用(切换)
- Fragment的简单使用(切换界面)
- Fragment的简单使用(切换界面)-FenGKun
- 使用Fragment实现底部菜单的切换
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)
- android 使用fragment切换,出现fragment重叠的问题
- 主界面的Fragment切换之使用FragmentTabHost配合切换Fragment
- 主界面的Fragment切换之使用RadioGroup配合切换Fragment
- Kotlin使用(fragment的切换与listview、recyclerView的使用)
- Fragment之间的切换
- Fragment的切换
- 简单的Fragment切换
- 关于Fragment 的切换
- 两个fragment的切换
- Fragment页面的切换
- Fragment的切换方法
- Fragment切换的演示
- Fragment的切换
- windows10如何禁用驱动签名验证
- TypeScript
- Git的使用一:下载安装
- PAT 乙等 1009 C语言
- 数字逻辑练习题
- Fragment的使用(切换)
- 数据结构-单链表反转
- JVM初窥:javac命令
- nodejs+sequelize同步模型到mysql数据库
- lib + namespace
- 装饰者设置模式和代理模式的区别
- jbpm(java 业务流程管理)
- 多线程的那点儿事(之死锁)
- 51nod 1433 0和5(数学)