新手关于FragmentTransaction(回退栈)容易误解的地方

说来惭愧,在开始的时候,我就进入了所谓的误区,直到今天才明白。

那么,所谓的误区是什么?

你认为,FragmentTransaction中储存的是什么?

一开始,我以为里面存放的,是上一个Fragment。

现在才知道里面放着的,其实,是一系列对框架的操作。

为什么?

可以根据添加到回退栈的方法进行回推。

我们通常都是通过以下的方式进行存如回退栈:

FragmentManager manager = getFragmentManager();

				FragmentTransaction transaction = manager.beginTransaction();

				transaction.add(R.id.fragment_container, new Fragment2());

				transaction.addToBackStack(null);

				transaction.commit();

addToBackStack()方法的调用都是在transaction添加动作之后commit()之前。

如果存入的一个框架,那么为什么不可以在添加动作之前就进行移入栈呢?

因此,存入在栈中的其实是一系列对框架的操作。

-----------------------------------------------------------------------------------------------不喜勿喷,欢迎讨论

时间: 2024-08-03 23:16:19

新手关于FragmentTransaction(回退栈)容易误解的地方的相关文章

Fragment 事务 回退栈

一些相关API 1.Fragment常用的三个类: android.app.Fragment 定义android.app.FragmentManager 用于在Activity中操作Fragmentandroid.app.FragmentTransaction 保证一些列Fragment操作的原子性.事务 2.FragmentManager可以做的事情:  使用findFragmentById (适用于在静态fragment,不常用)或 findFragmentByTag (适用于动态加载的fr

Fragment 回退栈 传递参数,点击切换图片使用Fragment ListView

Fragment回退栈  类似与Android系统为Activity维护一个任务栈,我们也可以通过Activity维护一个回退栈来保存每次Fragment事务发生的变化. 如果你将Fragment任务添加到回退栈,当用户点击后退按钮时,将看到上一次的保存的Fragment. 一旦Fragment完全从后退栈中弹出,用户再次点击后退键,则退出当前Activity.   transaction.add(R.id.right, rightFragment); transaction.addToBack

Activity回退栈使用

当一个APP启动时,系统会为这个APP创建一个回退栈(任务),用于保存APP所有已经创建的额Activity.当应用启动时,主窗口将第一个被压入回退栈,当显示本应用的其他窗口时,也会按显示顺序创建窗口压入回退栈.回退栈的顶层窗口将会获得焦点,可以与用户交互.当执行Activity的finish方法或者按Back键时,顶层窗口将出栈被销毁,下一个窗户获得焦点同用户交互.例如一个APP有3个窗口,分别为:A.B.C,其中A为主窗口,当从A启动B,在从B启动C,从C启动A时,此时回退栈的顺序为AàBà

Android Api Component---翻译任务和回退栈(Tasks and Back Stack)

一个应用程序通常包含多个activity.每一个activity应当围绕一个指定的用户可以执行的并且可以开启其它activity的动作种类被设计.例如,一个emali应用程序也许有一个activity展示新消息列表.当用户选择了一个消息的时候,一个新的activity会打开查看这个消息. 一个activity甚至可以开启设备上的其它应用程序的activity.例如,如果你的应用程序向发送一个邮件消息,你可以定义一个intent执行一个"send"动作并且包含一些像email地址和消息的

Task 和 Activity 回退栈操作。

首先说一下Task是一个什么概念吧:Task是一个包含activity的列表.没 错,简单的说就是按照启动的先后来排队的一个队列.Back Stack,就是回退栈的意思:那么有什么用?Back Stack是存储一个Task的实现方式,一个容器.它具有栈的特性:后进先出. 那么,依据什么来把activity指定给某个Task? ------默认情况下,根据activity的启动的顺序,加入A启动了B,那么B默认情况下就放到了 A的Task的Back Stack里面啦.当然,你也可以去修改这一个默认

android之Task和Back Stack(回退栈)

通常一个应用程序包括多个Activity,我们在使用程序是,一个Activity到另一个Activity,又到别的Activity,然后我们按下返回键又能按打开的顺序,倒叙返回.android中是怎么做到的?Task和Back Stack与此密不可分. Task存储了一组页面的集合,并且这个集合会被排列到一个叫Back Stack中,保存的目的在于记录Activity的打开顺序. 特点:系统会给每个程序分配唯一的Task和回退栈. 回退栈的特点:先进后出. 改变Activity的排序方式:是通过

清空Fragment回退栈中某个Fragment之上的所有Fragment

根据debug信息查看Fragment回退栈的情况,具体debug代码如下: int num = getActivity().getSupportFragmentManager().getBackStackEntryCount(); String numString = "++++++++++++++++++++++++++++++++++Fragment回退栈数量:"+num; TALogger.d("Fragment", numString); for (int

任务和回退栈

任务和回退栈 任务(task)是为了完成某种工作而有序地组合在一起的Activity集合.这些Activity可能来自一个应用,也可能来自多个应用.这些Activity按照被打开的顺序被保存在回退栈(back stack)中. 任务通常开始于桌面,当桌面的应用图标被点击时,应用任务来到前台.如果对应的应用的任务还没有,给此应用创建一个新的任务,并且将"main"Activity作为回退栈的根Activity. 当一个Activity打开另一个时,新的Activity将被压入回退栈的栈顶

Android开发-API指南-任务和回退栈

Task 和 Back Stack 英文原文: http://developer.android.com/guide/components/tasks-and-back-stack.html 采集(更新)日期:2014-12-16 在本文中 保存 Activity 状态 管理多个 Task 指定启动模式 处理 affinity 清理回退栈k 启动任务 相关文章 Multitasking the Android Way 参阅 Android 设计 : 导航 <activity> manifest