fragmet 笔记

frgment 是什么?

碎片(Fragment)是一种可以嵌入在活动当中的UI片段,也可以看成是一个小型的 Activity ,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛。

生命周期

转自:https://blog.csdn.net/wuyuxing24/article/details/78698633
在这里插入图片描述

在这里插入图片描述

Activity 绑定 fragment 的方法:

  1. Activity里面动态启动 ( 实例化碎片、获取FragmentManager、开启一个事务、向容器里添加或替换碎片、提交事务)
public class MainActivity extends AppCompatActivity {
   private FragmentManager fragmentManager;
   private FragmentTransaction transaction;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       replaceFragment(new MyFragment());     //实例化碎片
   }

   private void replaceFragment(Fragment fragment) {
       // 获取FragmentManager,在活动中可以直接通过调用getFragmentManager()方法得到
       fragmentManager = getSupportFragmentManager();
       // 开启一个事务,通过调用beginTransaction()方法开启
       transaction = fragmentManager.beginTransaction();
       //向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例
       transaction.replace(R.id.fr_container, fragment);  //fr_container不能为fragment布局,可使用线性布局相对布局等。
       //使用addToBackStack()方法,将事务添加到返回栈中,填入的是用于描述返回栈的一个名字
       transaction.addToBackStack(null);
       //提交事物,调用commit()方法来完成
       transaction.commit();
   }
}
  1. xml布局文件绑定 Fragment
    在xml文件中声明name属性,找到对应的Fragment.class
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <fragment
        android:id="@+id/daily_task_fragment"
        android:name="com.example.z.mydaily.DailyTaskFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</FrameLayout>

Fragment的使用

转自:https://blog.csdn.net/wuyuxing24/article/details/78698633
在Fragment使用之前,有三几个特别重要的类要先来了解下:FragmentManager、FragmentTransaction、FragmentManager.BackStackEntry

  • FragmentManager:FragmentManager是负责管理Fragment并将它们的视图添加到Activity视图层级结构中的一个管理类。
    FragmentManage可以做那些事情:
  1. 通过 findFragmentById()(对于在 Activity 布局中提供 UI 的片段)或 findFragmentByTag()(对于提供或不提供 UI 的片段)获取 Activity 中存在的片段。
  2. 通过 popBackStack()(模拟用户发出的返回命令)将片段从返回栈中弹出。
  3. 通过 addOnBackStackChangedListener() 注册一个侦听返回栈变化的侦听器。
  4. 开启一个事务。
  • FragmentTransaction:所有对Fragment的动态操作都是通过FragmentTransaction事务来提交执行。FragmentTransaction是一个事物(事务是在同一时刻执行的一组动作,很像数据库中的事务)。你可以用add(),remove(),replace()等方法构成事务,最后使用commit()方法提交事务。在调用commint()之前,你可以用addToBackStack()把事务添加到一个后退栈中,这个后退栈属于所在的Activity。有了它,就可以在用户按下返回键时,返回到Fragment们执行事务之前的状态。
    FragmentTransaction中对Fragment的操作大致可以分为三类:
  1. 显示操作:add()、 replace()、 show()、 attach()。
  2. 隐藏操作:remove() 、hide() 、detach()。
  3. 添加回退栈:addToBackStack()。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值