Fragment的回退栈
2016-12-02 22:18
85 查看
因为Fragment必须嵌入在Acitivity中使用,所以Fragment的生命周期和它所在的Activity是密切相关的。
如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。
但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。
当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。
Activity切换时,相信大家都知道是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回退栈,它是直接销毁再重建,但如果将Fragment任务添加到回退栈,情况就会不一样了,它就有了类似Activity的栈管理方式。
也就是说,当Fragment被压到回退栈中的时候,没有被销毁。
示例代码:“
如果Activity是暂停状态,其中所有的Fragment都是暂停状态;如果Activity是stopped状态,这个Activity中所有的Fragment都不能被启动;如果Activity被销毁,那么它其中的所有Fragment都会被销毁。
但是,当Activity在活动状态,可以独立控制Fragment的状态,比如加上或者移除Fragment。
当这样进行fragment transaction(转换)的时候,可以把fragment放入Activity的back stack中,这样用户就可以进行返回操作。
Activity切换时,相信大家都知道是通过栈的形式,不断压栈出栈,在Fragment的时候,如果你不是手动开启回退栈,它是直接销毁再重建,但如果将Fragment任务添加到回退栈,情况就会不一样了,它就有了类似Activity的栈管理方式。
也就是说,当Fragment被压到回退栈中的时候,没有被销毁。
示例代码:“
@Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.f_activity); fragmentManager = getSupportFragmentManager(); Button one = (Button) findViewById(R.id.one); Button two = (Button) findViewById(R.id.two); Button three = (Button) findViewById(R.id.three); one.setOnClickListener(this); two.setOnClickListener(this); three.setOnClickListener(this); } @Override public void onClick(View v) { //开启事物 FragmentTransaction transaction = fragmentManager.beginTransaction(); switch (v.getId()){ case R.id.one: transaction.replace(R.id.content,new Fragment1()); break; case R.id.two: transaction.replace(R.id.content,new Fragment2()); transaction.addToBackStack(null); break; case R.id.three: transaction.replace(R.id.content,new Fragment3()); transaction.addToBackStack(null);//会把本次提交的Fragment都提交到回退栈, // 不管有有多少 break; } transaction.commit(); }
相关文章推荐
- Fragment 事务 回退栈
- Fragment涉及的add、remove和replace方法和回退栈的关系详解
- 解决Fragment 使用回退栈,返回上一Fragment不刷新有关问题
- Android 实现同个Activity中存在多个Fragment多次切换之后依次返回(一)(Fragment回退栈简单使用)
- FragmentTransaction的回退栈
- Android Fragment(三)---生命周期与回退栈
- Fragment进阶篇之Fragment生命周期和回退栈
- fragmentManager中的回退栈
- fragmentManager中的回退栈
- 处女男学Android(九)---Fragment进阶篇之Fragment生命周期和回退栈
- fragmentManager中的回退栈
- android fragment的回退栈
- Fragment事务与回退栈
- 关于Fragment 的回退栈
- android学习记录(六)FragmentTransaction(回退栈)容易误解的地方
- Android Fragment的回退栈示例详细介绍
- Fragment涉及的add、remove和replace方法和回退栈的关系详解
- Android 实现同个Activity中存在多个Fragment多次切换之后依次返回(一)(Fragment回退栈简单使用)
- fragment之添加回退栈
- Fragment的回退栈