Fragment关于压栈的知识

作者: 金馆长说 | 来源:发表于2016-09-12 16:51 被阅读163次

这里说一下关于fragment的一些压栈和出栈的知识

fragment在我们的工作是经常用到的,简单说它就是比activity更加小巧而且灵活的一个UI组件而且具备和activity差不多的一些声明周期方法。既能在xml布局中直接引入重用,也能在我们的代码中动态的添加。fragment必须是依付activity而存在的,activity的生命周期会影响到fragment的生命周期。

  • 生命周期

onAttach
当Fragment和Activity发生关联是调用

onCreateView
创建视图

onActivityCreated
activity的oncreate调完后,调用。

onDestoryView
和OnCreate相应 Fragment视图移除后调用

onDetach
和onAttach对于 取消关联是调用

除了OnCreateView以外,其他方法重新都要调用super



  1. 静态使用方法
---xml
<fragment   
 android:id="@+id/fragment"
 android:name="AddFragment"   
 android:layout_width="match_parent"    
 android:layout_height="match_parent">

---代码
public class OneFragment extends android.app.Fragment {

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.i("jinwei", "onAttach");
    }


    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        Log.i("jinwei", "onAttach activity");
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("jinwei", "onCreate");
    }


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        Log.i("jinwei", "onCreateView");
        return super.onCreateView(inflater, container, savedInstanceState);
    }


    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.i("jinwei", "onActivityCreated");
    }


    @Override
    public void onStart() {
        super.onStart();
        Log.i("jinwei", "onStart");
    }


    @Override
    public void onResume() {
        super.onResume();
        Log.i("jinwei", "onResume");
    }


    @Override
    public void onPause() {
        super.onPause();
        Log.i("jinwei", "onPause");
    }


    @Override
    public void onStop() {
        super.onStop();
        Log.i("jinwei", "onStop");
    }


    @Override
    public void onDetach() {
        super.onDetach();
        Log.i("jinwei", "onDetach");
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i("jinwei", "onDestroy");
    }


    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.i("jinwei", "onDestroyView");
    }
}



2.动态使用

---xml
<Fragment   
 android:id="@+id/frame_layout"
 android:layout_width="match_parent"    
 android:layout_height="match_parent">

---代码片段

FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.fragment, mOneFragment);
transaction.commit();
  • 事物介绍
    如果需要动态使用fragment就需要用到getFragmentManager().beginTransaction()这个事物类。
    每次进行了操作都要获取一次事物,然后在进行提交操作。
    FragmentTransaction transaction = getFragmentManager().beginTransaction()
    transaction.commit();

    add(id,fragment)
    添加一个fragment

    reaple(id,fragment)
    替换一个事物

    remove(fragment)
    移除

    attach(fragment)
    附加一个fragment

    detach(fragment)
    移除一个fragment

    addToBackStack("")
    对事物进行加入栈处理如果add后。当退出会按顺序退出fragment。

    commitAllowingStateLoss();
    和commit()一样。不同的是commit下onSaveInstanceSate后调用commit会carsh,
    而这个方法会进行检查这种操作不会奔溃,但是onSaveInstanceSate就不会进行存储操作了。

    executePendingTransactions
    commit()后调用,来保证立即执行,变异步为同步。

    commitNow()
    将只会执行你当前要提交的transaction. 所以commitNow()避免你会不小心执行了那些你可能并不想执行的transactions.

提交方法的参考
具体的使用方法参考

相关文章

  • Fragment关于压栈的知识

    这里说一下关于fragment的一些压栈和出栈的知识 fragment在我们的工作是经常用到的,简单说它就是比ac...

  • Fragment回退栈详解

    一、什么是回退栈 Activity切换时是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启...

  • Fragment 回退栈

    一、什么是回退栈 Activity切换时是通过栈的形式,不断压栈出栈.在Fragment的时候,如果你不是手动打开...

  • Fragment 回退栈

    一、什么是回退栈Activity切换时是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回...

  • Fragment回退栈和Activity栈不太一样

    Fragment回退栈,加入到Fragment回退栈里面的fragment出栈后,处于栈顶的fragment也不会...

  • Fragment的使用注意事项

    Fragment任务栈 Fragment也添加任务栈管理,从而实现多个Fragment先后添加后可以返回上一个Fr...

  • Java实现栈

    数组栈:压栈、出栈、返回栈顶元素 链式栈:压栈、出栈、返回栈顶元素

  • OpenGL_矩阵压栈和出栈

    1. 压栈和出栈的理解 压栈出栈操作的是矩阵 用来记录矩阵的状态 压栈PushMatrix和出栈PopMatrix...

  • Fragment学习

    1、Fragment回退栈管理 Activity是由任务栈管理的,遵循先进后出的原则,Fragment也可以实现类...

  • 3.栈

    8086 SS作为栈段的段地址,SS:SP指向栈顶元素 栈底在高地址,压栈是往低地址压 压栈 = SP - 2 ,...

网友评论

    本文标题:Fragment关于压栈的知识

    本文链接:https://www.haomeiwen.com/subject/gbvpettx.html