千家信息网

Fragment组件怎么用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Fragment组件怎么用",在日常操作中,相信很多人在Fragment组件怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Fragment组件怎
千家信息网最后更新 2026年10月31日Fragment组件怎么用

这篇文章主要介绍"Fragment组件怎么用",在日常操作中,相信很多人在Fragment组件怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Fragment组件怎么用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、Fragment与Activity的关系

要理解动态管理Fragment首先要理解一下Fragment与Activity的关系

Fragment可以理解为将Activity划分为若干个片段,Fragment是Activity的一部分,生命周期是依赖Activity的,是不能单独存在的。这样不难理解所有Fragment的管理(查找、添加、删除、替换)都应该在Fragment所依赖的Activity中进行,也就是Activity才是Fragment交互的场所,不要试图在一个Fragment中去管理另一个Fragment虽然也可以实现要求的功能但是不符合规范的。要完成对Fragment的具体操作需要使用FragmentManager组件。

二、使用FragmentManager组件

使用FragmentManager组件的关键代码如下:

//1、创建FragmentManager组件 FragmentManager fm=super.getSupportFragmentManager(); //2、查询方法,获得Activity中某一个Fragment fm.findFragmentById(R.id.fooler) fm.findFragmentByTag("tagName") //3、动态添加Fragment fm.beginTransaction().add(R.id.content,contentFragment,"content").commit(); //4、替换Fragment fm.beginTransaction().replace(R.id.OldFragment, newFragment).commit(); //5、删除Fragment fm.beginTransaction().remove(R.id.myFragment).commit(); //6、向Fragment传递数据 f.setArguments(Bundle )方法传递数据

上述管理Fragment代码应组织在Fragment所属的Activity中去,下面就通过一个案例来看看具体实现.

三、实现案例

首先看一下本次的应用案例(如图所示),当单击底部***个区域和第二区域时实现中心区域的切换

界面分析:有三个区域 :头部区域TitleFragment,中心区域是一个FrameLayout布局通过代码动态加载ContentFragment,底部区域FloorFragment

1、Activity的布局如下

RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">      复制代码 2、FloorFragment代码 复制代码  public class FloorFragment extends Fragment implements OnClickListener { @Override public void onAttach(Activity activity) { super.onAttach(activity);  } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.floor_fragment, container,false); LinearLayout home=(LinearLayout)view.findViewById(R.id.home); LinearLayout list=(LinearLayout)view.findViewById(R.id.list); home.setOnClickListener(this); list.setOnClickListener(this); return view; } //定义接口,该接口在Activity中去实现,降低Activity与Fragment的耦合度 public interface OnContentFragmentListener{ void setContentFragment(String param); } private OnContentFragmentListener onContentFragmentListener; public void setOnContentFragmentListener( OnContentFragmentListener onContentFragmentListener) { this.onContentFragmentListener = onContentFragmentListener; } @Override public void onClick(View view) { // TODO Auto-generated method stub if(onContentFragmentListener!=null){ switch(view.getId()){ case R.id.home: //回调机制,调用实现类的方法 onContentFragmentListener.setContentFragment("主面板Fragment"); break; case R.id.list: onContentFragmentListener.setContentFragment("列表信息"); break; } } } } 3、ContentFragment代码
public class ContentFragment extends Fragment { private String title; public void setArguments(Bundle args) { title=args.getString("title"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.content_fragment, container,false); if(title!=null)((TextView)view.findViewById(R.id.tvContent)).setText(title); return view; } }

4、DynaFragmentActivity代码

public class DynaFragmentActivity extends FragmentActivity implements FloorFragment.OnContentFragmentListener { private ContentFragment contentFragment; private FloorFragment floor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.dyna_fragment_activity); initFragment(); } private void initFragment(){ floor=(FloorFragment)super.getSupportFragmentManager().findFragmentById(R.id.floor); floor.setOnContentFragmentListener(this);//注册侦听,传入实现类对象 contentFragment=new ContentFragment(); FragmentManager fm=super.getSupportFragmentManager(); fm.beginTransaction().add(R.id.content,contentFragment,"content").commit(); }  public void setFragment(Fragment fragment){ getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit(); }  @Override public void setContentFragment(String param) { // TODO Auto-generated method stub Bundle bundle=new Bundle(); bundle.putString("title", param); contentFragment=new ContentFragment(); contentFragment.setArguments(bundle); super.getSupportFragmentManager().beginTransaction() .replace(R.id.content, contentFragment).commit(); }  }

到此,关于"Fragment组件怎么用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

组件 代码 区域 方法 学习 管理 动态 案例 布局 底部 接口 数据 更多 帮助 实用 接下来 三个 也就是 信息 关键 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会副主任毛军 新华互联网科技学校 互联网科技有限公司图片 美国互联网科技巨头监管 互联网 科技 奔汉互联网科技 互联网和高科技公司 常德市电业局互联网科技部 世界互联网科技公司市值排名 互联网科技公司有风险吗 内蒙古九一互联网科技 为客找房互联网科技公司怎么样 互联网方面的科技前沿 江苏苏星互联网科技有限公司 浙南科技城互联网大厦招聘 互联网科技包装股 广东鹅鹅鹅互联网科技有限公司 马化腾互联网科技教学 现代科技的标志之一的互联网 科技发展第三阶段互联网时代 科技赋能下的互联网金融 互联网通讯科技 南京欣网互联网科技 奇士达互联网科技 互联网 视角下的科技创新 互联网 科技馆 北京大学互联网科技怎么样 金融科技与互联网金融相同和不同 北京互联网科技类企业分布 科技互联网公司两年变化
0