zoukankan      html  css  js  c++  java
  • Fragment 使用总结

    1. 要深刻理解Fragment 的生命周期

    2. Fragment.getActivity()并不能保证非空。

    3.如果在Fragment中有异步的回调, 特别要注意此时Fragment 是否还attached 在Activity中,可以调用isVisible()来判断

    4. Layout 中添加fragment 与代码中添加Fragment 的区别:

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:id="@+id/register_container"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <!---->
     8     <fragment
     9         android:layout_width="match_parent"
    10         android:layout_height="match_parent"
    11         class="com.xxx.xxxx.fragment.RegisterBasicInfoFragment" />
    12 
    13     
    14 
    15 </LinearLayout>
     1     @Override
     2     protected void onCreate(Bundle savedInstanceState) {
     3         super.onCreate(savedInstanceState);
     4         this.setContentView(R.layout.register);
     5         
     6         FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();
     7         RegisterBasicInfoFragment bf = new RegisterBasicInfoFragment();
     8         
     9         ft.replace(R.id.register_container, bf).commit();
    10     }

    前者,register_container 被replace 成另外一个Fragment的时候,旧的Fragment不会走销毁流程onPause->onStop->onDetroyView;

    但是后者,会走销毁流程。

    5. 需要传入参数的Fragment, 要用静态的newInstance(.....)方式来获得实例,而不要直接new, 然后用setXXX 的方式。

    1     public static RegisterDetailInfoFragment newInstance(String userName, String password) {
    2         RegisterDetailInfoFragment f = new RegisterDetailInfoFragment();
    3         Bundle args = new Bundle();
    4         args.putString("userName", userName);
    5         args.putString("password", password);
            f.setArguments(args);

    6 return f; 7 }

    你可能会说,为啥不直接用有参数的构造函数呢?原因是,某些情况,Fragment 要重新构建,系统不会认识的有参数的构造函数,只会调用默认无参构造函数;而用静态newInstance这种方式,你要在里面把参数放到setArguments当中,系统在onSavedInstanceState的时候,会把你的参数持久化,重建的时候,参数值就不会丢失了。

  • 相关阅读:
    谈谈Vue.js——vue-resource全攻略
    XStream(xml/bean转换)
    Notepad++ xml/json格式化
    秒杀系统架构分析与实战
    Spring事务管理
    小程序思维导图(一)
    小程序思维导图(二)
    轻松搭建持续集成工具jenkins
    rep stos dword ptr es:[edi]
    关于dword ptr 指令
  • 原文地址:https://www.cnblogs.com/vivid-stanley/p/3657976.html
Copyright © 2011-2022 走看看