第四章 手机平板要兼顾-探究碎片

Fragment的使用方式

在Fragment中模拟返回栈

  • FragmentTransaction中提供了一个addToBackStack方法,用于将一个事务添加到回退栈中,参数可写为null。

Fragment的生命周期

Fragment的状态和回调

  • 状态

    • 运行状态
      • 可见、它所关联的activity是运行状态
    • 暂停状态
      • 依旧是可见的,只是它所关联的activity处于了暂停状态
    • 停止状态
      • 它所关联的activity处于了停止状态
      • 通过FragmentTransaction的remove、replace方法将fragment从activity中移除 ,但是在提交事务之前,通过addToBackStack方法将该事务添加到返回栈,此时也会进入停止状态。进入停止状态的fragment对用户来说是完全不可见的,有可能被系统回收。类比activity的onStop调用之后(进入停止状态)
    • 销毁状态
      • activity销毁,fragment也就跟着销毁了
      • 通过FragmentTransaction的remove、replace方法将fragment从activity中移除 ,但是在提交事务之前,没有通过addToBackStack方法将该事务添加到返回栈,此时也会进入销毁状态。
  • 回调

    • onAttach
      • 与activity建立关联
    • onCreate
      • 创建
    • onCreateView
      • 为fragment创建视图的时候调用
    • onActivityCreated
      • 确保与fragment关联的activity创建完毕调用,注意:fragment停止的时候再次恢复会直接调用onCreateView,然后调动该方法,activity一直存在。
    • onStart
      • 对应activity的方法(注意:只有在第一次在activity中加载,并且activity也是重新加载才会对应,对于替换fragment等造成的fragment重新执行方法不会与activity对应)
    • onResume
      • 对应activity的方法(注意:只有在第一次在activity中加载,并且activity也是重新加载才会对应,对于替换fragment等造成的fragment重新执行方法不会与activity对应)
    • onPause
      • 对应activity的方法(注意:只有在第一次在activity中加载,并且activity也是重新加载才会对应,对于替换fragment等造成的fragment重新执行方法不会与activity对应)
    • onStop
      • 对应activity的方法(注意:只有在第一次在activity中加载,并且activity也是重新加载才会对应,对于替换fragment等造成的fragment重新执行方法不会与activity对应)
    • onDestroyView
      • 视图被移除
    • onDestroy
      • 销毁
    • onDetach
      • 与activity解除关联
  • 关于回收

    • fragment进入停止状态也可能因为内存不足被回收,也会调用onSaveInstanceState方法,可以再onCreate、onCreateView和onActivityCreated的参数中拿到数据

动态加载布局的技巧

  • 使用限定符
    这里写图片描述

  • 使用最小宽度限定符

    • layout-sw600dp 表示宽度大于600dp就加载它

一个简易的新闻客户端

  • 兼容手机和平板
    • 创建两个类
      • TitleFragment
        • 里面是listview,设置点击事件,通过它所依附的activity.findviewbyid去看是否包含有ContentFragment,如果有就说明是平板模式,如果没有就是手机模式。平板模式下刷新第二个fragment,手机模式下跳转Activity
      • ContentFragment
    • 两个activity_main布局文件
      • 位于layout-sw600dp 里面有两个,name分别用前面两个类
      • 位于layout,里面有一个,name为TitleFragment
    • 创建MainActivity,加载activity_main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值