android开发(41) Fragment中使用POP_BACK_STACK_INCLUSIVE达到一次跳转到栈底。类似Activity的 采用FLAG_ACTIVITY_CLEAR_TOP

需求场景:

在开发中遇到下面这样场景:

1.创建 Fragment A 显示。  这时栈的结构是:

  

1.Fragment A 

2.创建 Fragment B 并 显示。  从下到上看,这时栈的结构是:

2.Fragment B
1.Fragment A

3.创建 Fragment C 并 显示。  从下到上看,这时栈的结构是:

3.Fragment C
2.Fragment B
1.Fragment A

那么,如何从 Fragment C 一次性跳到 Fragment A 呢?

实现:

入栈时,使用方法

addToBackStack(nameForBackstackstate) 

传入了一个参数 name,这是个Fregment的标示,下面还要用到。

代码:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
String name = fragment.getClass().getName();
fragmentTransaction.replace(R.id.container, fragment).addToBackStack(nameForBackstackstate).commit();

弹出时这么做:

fragmentManager.popBackStackImmediate(FragmentA.class.getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);

这个方法的第二个参数

POP_BACK_STACK_INCLUSIVE

指示了这个弹出行为是 一次性出栈“指定的name的”Fragment 以上的所有 Fragment。

参考:

http://www.cnblogs.com/qixing/p/4015262.html

时间: 2024-07-30 10:17:30

android开发(41) Fragment中使用POP_BACK_STACK_INCLUSIVE达到一次跳转到栈底。类似Activity的 采用FLAG_ACTIVITY_CLEAR_TOP的相关文章

Android 开发 之 Fragment 详解

作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 1. Fragement 概述 Fragement 与 Activity 生命周期关系 : Fragement 嵌入到 Activity 组件中才可以使用, 其生命周期与 Activity 生命周期相关. -- stop 与 destroy 状态 : Activity 暂停 或者 销毁的时候, 其内部嵌入的所有的 Fragement 也会执行

Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

Android开发:碎片Fragment完全解析 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activity一样包含布局.Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个 Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题.Fragment 2包含了TextView和 ImageView,来显示书的详细内容和图片. AD:51CTO学院:I

Android开发——VirtualBox环境中的虚拟机使用

题目想了半天,还是那么纠结,解释下吧.最近开始接触Android开发,开发环境的部署就不说了,各种费劲凿墙.好不容易搞定了,调试又来了问题.Android设备老旧,效率低下:AVD就是更不用说了,一张张图片看过去.好在有神器,Genymotion! 在此强力推荐~!性能甩各种android设备好几条街. 可是问题来了,本人有个癖好,喜欢将各种开发环境分别放到不同的虚拟机里,这样互相不会干扰,而且可以带来带去.但是Genymotion在虚拟机里用不了~,提示需要OpenGL2.0版本以上的支持.可

Android开发:Eclipse中SqliteManager插件使用

通常开发Android的时候要使用到数据库操作,会遇到下面小问题: 数据库文件在哪?怎样訪问或操作? 能够通过:打开DDMS->File Explorer看到的sqlite数据库在eclipse,然后在文件夹/data/data/package_name/databases下找到. 可是我们仅仅能看到.db文件,根本看不到里面的表格数据,更别说操作数据啦. 当然,我们能够把.db文件导出来,用数据库操作工具(如SQLite Expert)来操作数据,这是不是非常麻烦呀,今天我们就能够用一个简单的

EventBus框架在Android多Pane(Fragment)中的应用

通常多pane的设计中,比如Fragment A是个Headline,Fragement B是detail,那么B通常需要实现A的点击事件的接口,这样子的话,两个fragment就高耦合了,而且需要在Fragment A中编写一个interface,如果Fragment很多,情景更复杂些,就乱了. 这里可以使用EventBus这个框架,一个典型的发布者-订阅者模式.具体可以参考: https://github.com/greenrobot/EventBus 使用方法大致如下: 这个例子来源于An

Android开发 碎片Fragment的API全解与标准使用

前言 我还在学习Android开发的时候发过一篇简单的入门Fragment demo代码:https://www.cnblogs.com/guanxinjing/p/9708626.html 但是,Fragment远远不是一个简单的Demo就能了解清楚的,所以此篇博客将讲解FragmentManage的Api的功能 如何获取FragmentManage activity里获取FragmentManage方式如下: @Override protected void onCreate(Bundle

[Android] 多重使用Fragment 中的onFragmentInteraction

新建的一个Fragment,被一个Activity使用,那么这个Activity需要继承一个接口: public class MainActivity extends Activity implements HistoryFragment.OnFragmentInteractionListener{ } 否则会被报错 java.lang.ClassCastException: [email protected] must implement OnFragmentInteractionListen

【Android笔记】Fragment中显示高德地图

本文来自:fair-jm.iteye.com 转截请注明出处 官网的教程是在Activity下 在Fragment下在高德论坛找到一些方法 试了下可以显示 但是切换后总会有些问题 比如切换后就是新的了 切换后地图就不显示了 我这种方式可以在切换后保持地图状态 但是得限定屏幕为水平或者竖直 如果翻转的话也会报错 布局文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns

android开发(35) fragment和actionbar组合使用。解决不触发onOptionsItemSelected的问题,获得actionbar 的默认 get icon

先说说我的使用场景: 我写了一个activity,使用了actionbar. 在这个activity中,有fragment,默认先打开一个 homeFragment,点击某个按钮会进入 detailFragment. 当启动detailFragment 时,问题出现了: 我希望在detailFragment 打开时,actionbar出现 返回的箭头  "<" . 于是我在onStart中写下: @Override public void onStart() { super.on