zoukankan      html  css  js  c++  java
  • Fragment使用的正确姿势

    

    网上关于Fragment的使用建议和分析非常多,可是依旧会有非常多人在使用Fragment的时候出现各种奇葩错误
    这篇文章我分享一下各种项目中解决Fragment的各种注意事项(不做原理分析),假设有错误欢迎大家指出
    0,必须知道Activity 、Fragment的生命周期。平时多看多对照就好。强记感觉效果不好
    1,假设Fragment初始化时须要传入參数那么必须实现setArguments,同一时候必须又一次onCreate方法对存入的值进行读取
    2,Fragment假设在执行期间參数的新的所有变量(网络。计算等)。必须在onSaveInstanceState里面进行保存;能够在onViewCreated里面又一次对view赋值
    3。尽量不要用到getActivity,假设用到一定须要非空推断
    Fragment最好不要用到异步线程,假设用到一定要考虑fragment是否被回收后线程回调情况;或者在onPase里面中断
    假设非要有这种情况。能够把这个交给它的activity'来处理
    5,假设在其他地方拿到frament的引用在使用它的所有变量。必须考虑当前fragment是否存在或者2是否已经实现
    6,FragmentManager系统会用这个来管理假设出现的fragment,假设出现奇葩的不可理解的异常请想一下这个类
    举个栗子:viewpager+fragment的使用场景,List<Fragment> mFragments 中须要改动或删除当中的对象,调用刷新比起作用。简单改动你须要在FragmentManager里面移除你须要变得的fragment或者替换,就可以达到效果
    7,百度统计关于fragment的统计未考虑6情况。可能会造成onResume和onPase方法不一致,然后给出一个内存泄露的警告
    8。假设在fragment的布局文件直接指定点击处理事件,假设在当前的fragment里面找不到,请看载入它的Activity
    9,fragment里面startActivityForResult,在低版本号里面不会有对应的回调。解决的方法在它的Activity里面处理
    10,fragment里面 View mView = inflater.inflate(R.layout.xxx null)。第二个參数假设没有特殊使用请设置null
    11,一个优化FragmentManager能够用findByTag获取你当前使用的fragment,而不用时时的保持引用(注意6)
    12,v4包和sdk以下的引用路径用的不是一个东东,会有兼容问题
    13。请用DialogFragment代替AlertDialog

    最后补充一个图来源不知道了

    
  • 相关阅读:
    Codeforces Beta Round #92 (Div. 2 Only) B. Permutations 模拟
    POJ 3281 Dining 最大流 Dinic算法
    POJ 2441 Arrange the BUlls 状压DP
    URAL 1152 Faise Mirrors 状压DP 简单题
    URAL 1039 Anniversary Party 树形DP 水题
    URAL 1018 Binary Apple Tree 树形DP 好题 经典
    pytorch中的forward前向传播机制
    .data()与.detach()的区别
    Argparse模块
    pytorch代码调试工具
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7077778.html
Copyright © 2011-2022 走看看