fragment stack

原创 2015年11月19日 16:03:28
public class FragmentStackFragmentSupport extends Fragment {
    int mStackLevel = 1;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        if (savedInstanceState == null) {
            // Do first time initialization -- add initial fragment.
            Fragment newFragment = FragmentStackSupport.CountingFragment.newInstance(mStackLevel);
            FragmentTransaction ft = getChildFragmentManager().beginTransaction();
            ft.add(R.id.simple_fragment, newFragment).commit();
        } else {
            mStackLevel = savedInstanceState.getInt("level");
        }
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_stack, container, false);


        // Watch for button clicks.
        Button button = (Button)v.findViewById(R.id.new_fragment);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                addFragmentToStack();
            }
        });
        button = (Button)v.findViewById(R.id.delete_fragment);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                getChildFragmentManager().popBackStack();
            }
        });
        button = (Button)v.findViewById(R.id.home);
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // If there is a back stack, pop it all.
                FragmentManager fm = getChildFragmentManager();
                if (fm.getBackStackEntryCount() > 0) {
                    fm.popBackStack(fm.getBackStackEntryAt(0).getId(),
                            FragmentManager.POP_BACK_STACK_INCLUSIVE);
                }
            }
        });


        return v;
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("level", mStackLevel);
    }


    void addFragmentToStack() {
        mStackLevel++;


        // Instantiate a new fragment.
        Fragment newFragment = FragmentStackSupport.CountingFragment.newInstance(mStackLevel);


        // Add the fragment to the activity, pushing this transaction
        // on to the back stack.
        FragmentTransaction ft = getChildFragmentManager().beginTransaction();
        ft.replace(R.id.simple_fragment, newFragment);
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.addToBackStack(null);
        ft.commit();
    }
}

相关文章推荐

管理Activity和Fragment(通过Stack<?>来进行管理)

今天无意间看了一个开源代码,第一次用到,也是第一次看见Stack这个玩意,以前都是自己通过List自定义管理Activity 和Fragment,用起来确实也好用,但是感觉没有Stack好用。毕竟它(...

fragment与回退栈back stack

fragment与回退栈back stack 作用:因在同一ViewGroup中显示多个Fragment,因此需要回退到上一次的Fragment时,需要回退栈 FragmentTransactio...

elk-stack-guide

  • 2017年11月08日 18:22
  • 12.55MB
  • 下载

logstash elk stack中文指南

  • 2017年11月10日 20:58
  • 12.38MB
  • 下载

堆区(heap)和栈区(stack)的区别

堆和栈的区别

ELK Stack深入浅出.pptx

  • 2017年11月03日 16:31
  • 3.69MB
  • 下载

Java用LinkedList实现的Stack

  • 2017年01月04日 11:11
  • 1KB
  • 下载

使用 ndk-stack 寻找Android程序Crash的原因

开篇废话很久不研究cocos2d-x了,也不知道如今发展如何了。先前写游戏时会分几块。 主要功能代码都是用C++编写,编辑器用vs android平台相关功能使用 Java 编写,编辑器用 Eclip...

stack java演示小代码

  • 2016年12月07日 12:44
  • 5KB
  • 下载

Building Hybrid Clouds with Azure Stack azw3

  • 2017年10月06日 15:20
  • 17.22MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fragment stack
举报原因:
原因补充:

(最多只允许输入30个字)