一:Fragment简介

二:Fragment生命周期

Activity和Fragment生命周期做比较【红箭头表示和ACtivity对应的方法一致】

onAttach():Fragment和Activity建立关联的时候调用
onCreateView():Fragment创建视图(加载布局)时调用
onActivityCreated():Fragment相关联的Activity已经创建完时调用
onDestriyView():Fragment关联的视图被移除时调用
onDetach:Fragment和Activity解除关联时的时候调用

三:创建Fragment

【注:创建一个名为test的Fragment】


【后端代码入下】

【删除目前用不到的部分剩下onCreateView(),该方法表示:Fragment创建视图(加载布局)时调用】

【前端:在fragment_test.xml中间位置显示test】

四:在Activity中添加Fragment

静态添加fragment


静态添加具体操作入下:
【将控件里的fragment拖动到界面即可】

【选择前面已经创建的fragment:test】

【成功静态添加fragment】

【运行程序】

动态添加fragment

在Activity中动态添加Fragment代码入下

五:实例练习(通过Fragment实现微信页面间的切换)

这里通过简洁版微信界面相互切换为例

1:项目架构

MyMessageFragment:对应微信“我的信息”界面 WeChatFragment:对应微信“微信首页”界面
DiscoverFragment:对应微信“发现界面”界面 ContactsFragment:对应微信“联系人界面”界面

【联系人界面】

【发现界面】

【我的信息】

【微信首页】

2:activity_main.xml前端布局代码
【界面入下】

【代码详情入下】

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><FrameLayoutandroid:id="@+id/frameLayout"android:layout_width="407dp"android:layout_height="0dp"android:layout_marginTop="8dp"android:layout_marginBottom="14dp"app:layout_constraintBottom_toTopOf="@+id/btn_wechat"app:layout_constraintEnd_toStartOf="@+id/btn_discover"app:layout_constraintStart_toStartOf="@+id/btn_discover"app:layout_constraintTop_toTopOf="parent"></FrameLayout><Buttonandroid:id="@+id/btn_wechat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginBottom="18dp"android:text="微信"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toStartOf="@+id/btn_contacts"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/frameLayout" /><Buttonandroid:id="@+id/btn_contacts"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="通讯录"app:layout_constraintEnd_toStartOf="@+id/btn_discover"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/btn_wechat"app:layout_constraintTop_toTopOf="@+id/btn_wechat" /><Buttonandroid:id="@+id/btn_discover"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="发现"app:layout_constraintEnd_toStartOf="@+id/btn_mymessage"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/btn_contacts"app:layout_constraintTop_toTopOf="@+id/btn_contacts" /><Buttonandroid:id="@+id/btn_mymessage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="我"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintStart_toEndOf="@+id/btn_discover"app:layout_constraintTop_toTopOf="@+id/btn_discover" />
</androidx.constraintlayout.widget.ConstraintLayout>

3:MainActivity代码详情

package cn.cg.wechat;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;public class MainActivity extends AppCompatActivity  {private Fragment weChat,contacts,discover,myMessage;private FragmentManager  fragmentManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);InintView();findViewById(R.id.btn_wechat).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {fragmentManager.beginTransaction().replace(R.id.frameLayout,weChat).commit();}});findViewById(R.id.btn_contacts).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {fragmentManager.beginTransaction().replace(R.id.frameLayout,contacts).commit();}});findViewById(R.id.btn_discover).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {fragmentManager.beginTransaction().replace(R.id.frameLayout,discover).commit();}});findViewById(R.id.btn_mymessage).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {fragmentManager.beginTransaction().replace(R.id.frameLayout,myMessage).commit();}});}//初始化操作private void InintView() {//【1】实例化Fragment的实例对象:weChat,contacts,discover,myMessage为Fragment对象weChat=new WeChatFragment();contacts=new ContactsFragment();discover=new DiscoverFragment();myMessage=new MyMessageFragment();//这个已经不在维护,不推荐使用// fragmentManager=getFragmentManager();//【2】获得FragmentManager(Dragment管理器)对象fragmentManager=getSupportFragmentManager();//【3】开启事务FragmentTransaction  fragmentTransaction=fragmentManager.beginTransaction();//【4】向Activity的布局容器(一般为FrameLayout)中添加FragmentfragmentTransaction.replace(R.id.frameLayout,weChat);//【5】提交事务fragmentTransaction.commit();}}

向Activity的布局容器(一般为FrameLayout)中添加Fragment除了replace()还有add()方法

replace()和add()的区别我在网上随便找了一篇,链接入下
Fragment中replace和add的区别

4:运行效果

【点击通讯录】

【点击发现】

【点击我】

【点击微信】

Android Fragment学习相关推荐

  1. android Fragment 学习资料推荐

    为什么80%的码农都做不了架构师?>>>    android   Fragment 学习资料推荐:android大神 郭霖 http://blog.csdn.net/guolin_ ...

  2. android fragment学习6--FragmentTabHost底部布局

    我个人觉得这个与fragment4 5是一样的,但是之前有三个项目中就是这样用的,没有出现问题,有必要拿出来分享下. 我的博客 android fragment学习5–fragment扩展 TabLa ...

  3. android fragment学习4-底部布局扩展TabLayout

    我的博客 Fragment学习3–底部tab布局 https://blog.csdn.net/qq_26296197/article/details/81146319 布局结构 用的是google比较 ...

  4. 【转】基于Android Fragment功能的例子

    原文网址:http://blog.csdn.net/eyu8874521/article/details/8252216 通过最近空闲时候对Fragment的学习,尝试着写了一个小Demo,将在开发的 ...

  5. android 底部通知,Android Fragment实现底部通知栏

    Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应 ...

  6. Android:日常学习笔记(8)———探究UI开发(2)

    Android:日常学习笔记(8)---探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...

  7. Android Fragment应用实战

    现在Fragment的应用真的是越来越广泛了,之前Android在3.0版本加入Fragment的时候,主要是为了解决Android Pad屏幕比较大,空间不能充分利用的问题,但现在即使只是在手机上, ...

  8. Fragment学习3--底部tab布局

    我的博客 Fragment学习2–简单的添加Fragment https://blog.csdn.net/qq_26296197/article/details/81146022 MessageFra ...

  9. Fragment学习2--简单的添加Fragment

    布局添加 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  10. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

最新文章

  1. Linux下tomcat安装及优化
  2. php处理二进制,PHP应用:PHP处理二进制数据的实现方法
  3. 计算机入门与学习回忆(一)
  4. Demosaic算法学习
  5. 10 个实战及面试常用 Shell 脚本编写
  6. 书评:JBoss AS 7:配置,部署和管理
  7. 【WPF学习】第四十七章 WriteableBitmap类
  8. 计算机类系统能力培养试点学校,南昌航空大学获批教育部计算机类专业系统能力培养试点高校...
  9. 运行VINS-mono:/home/tony-ws1/output/pose_graph/ not exists, trying to create it /home/tony-ws1/ou错误解决
  10. 手写邮箱获取验证码注册登录功能
  11. android 字体适配_移动端postcss-pxtorem rem适配方案
  12. Sql Server数据库查询去重数据,并保留最新的数据,以及删除重复数据
  13. 写给非网工的CCNA教程(6)VLAN和802.1q协议
  14. 100个Python实战项目(二)使用 Tkinter 的 日历 GUI 应用程序
  15. 计算机单位厘米 像素,像素厘米转换器
  16. ps图标长投影如何做?
  17. 【转】全套汽车标志\路牌,好不容易找到的哦!
  18. 软件测试面包屑什么意思,面包屑的用法面包屑有什么作用
  19. 赠书 | 《网络威胁情报技术指南》
  20. win7 两台PC网线直连创建家庭组局域网分享文件

热门文章

  1. Linux基金会宣布行业进一步支持Akraino Edge Stack
  2. 【优化算法】搜索引擎优化算法(BES)【含Matlab源码 1426期】
  3. 【轨迹跟踪】基于matlab无人机轨迹跟踪【含Matlab源码 1152期】
  4. 【疫情模型】基于matlab改进SEIR模型【含Matlab源码 670期】
  5. 【人民币识别】基于matlab GUI形态学钞票面额识别与统计【含Matlab源码 906期】
  6. 【背包问题】基于matlab离散粒子群算法求解背包问题【含Matlab源码 423期】
  7. go 变量大写_golang学习笔记(一):包,变量,函数
  8. 机器学习和ai哪个好_AI可以使您成为更好的运动员吗? 使用机器学习分析网球发球和罚球...
  9. oracle数据库建语句吗,Oracle建表语句是什么_数据库
  10. 问题1:VS2017:找不到 Windows SDK 版本10.0.17134.0