Fragment回退栈详解

2018-03-13  本文已影响0人  张迅之乎者也

一、什么是回退栈

Activity切换时是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回退栈,它是直接销毁再重建,但如果将Fragment任务添加到回退栈,情况就会不一样了,它就有了类似Activity的栈管理方式。

二、回退栈的使用

fragment跳转的封装

    public void startToFragment(Context context, int container, Fragment newFragment) {

        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.replace(container, newFragment);
        transaction.addToBackStack(context.getClass().getName());
        transaction.commit();
    }

1.fragment1 --> fragment2

       Fragment2 fragment2 = new Fragment2 ();
       startToFragment(getActivity(), R.id.layout_container, fragment2 );

2.fragment2 --> fragment1

getActivity().getFragmentManager().popBackStack();

3.fragment2 --> fragment3

      Fragment3 fragment3 = new Fragment3 ();
      startToFragment(getActivity(), R.id.layout_container, fragment3 );

4.fragment3 --> fragment1

   //回退栈中某个Fragment之上的所有Fragment
   FragmentManager fragmentManager = getFragmentManager();
   fragmentManager.popBackStackImmediate(
   MainActivity.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
上一篇 下一篇

猜你喜欢

热点阅读