addToBackStack 参数为 null 是什么意思?

2023-12-13

我有一个客户代码。所有片段只有一个活动,即单个活动正在管理所有片段。

此活动在该片段的方法末尾包含任何片段的以下代码 -

例如 - 片段MoreFragment:

MoreFragment firstFragment = new MoreFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.article_fragment, firstFragment)
.addToBackStack(null).commit();

So,

1)什么意思addToBackStack(null)随后是一个commit() ?

2)为什么需要传递空参数addToBackStack ?

3)这样添加后如何获取该片段?

看来这段代码毫无用处,因为我运行的代码没有最后一行.addToBackStack(null).commit()它运行没有任何问题。


addToBackStack(null) 后跟 commit() 是什么意思?

引用文档:

通过调用addToBackStack(),替换事务被保存到 返回堆栈,以便用户可以反转事务并恢复 按“后退”按钮可查看上一个片段。

如果您向事务添加多个更改(例如另一个 add() 或remove())并调用addToBackStack(),然后应用所有更改 在调用 commit() 之前作为单个添加到返回堆栈中 交易和后退按钮会将它们全部反转。

向 FragmentTransaction 添加更改的顺序并不重要,除了:

你必须打电话commit()最后的。如果您将多个片段添加到同一个容器中,那么添加它们的顺序将决定它们在视图层次结构中的显示顺序。

所以你必须最后承诺。

为什么需要向 addToBackStack 传递 null 参数?

它不需要为空,它可以是一个字符串。如果您不想,只需传递 null 即可。

公共抽象FragmentTransaction addToBackStack(字符串名称)

添加到 API 级别 11 将此事务添加到返回堆栈中。这意味着事务在提交后将被记住,并在稍后从堆栈中弹出时反转其操作。

参数 name 此返回堆栈状态的可选名称,或为 null。

关于:

看来这段代码没有用,因为我运行的代码没有最后一个 行 .addToBackStack(null).commit() 运行没有任何问题

如果您想导航到上一个片段,请将其添加到后台堆栈。所以这取决于你是否想将片段添加到backstack中。

像这样添加后如何获取该片段?

您已经拥有片段实例firstFragment。所以我不知道你所说的稍后获取片段是什么意思。

更多信息 @

http://developer.android.com/guide/components/fragments.html

http://developer.android.com/reference/android/app/FragmentTransaction.html#addToBackStack(java.lang.String)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

addToBackStack 参数为 null 是什么意思? 的相关文章

随机推荐

  • 禁用传单绘制“删除”按钮

    如何禁用 删除删除按钮传单抽奖编辑工具栏 编辑 按钮应保持启用状态 关于章节中的文档禁用工具栏项您可以执行以下操作 map addControl new L Control Draw edit featureGroup drawnItems
  • HTML5 将画布保存为 PNG

    我按照这个示例将画布保存到 PNG 文件 http greenethumb com article 1429 user friend image saving from the canvas 我的问题 下载的文件已损坏 当我在记事本中打开它
  • 为什么调试器不会将 win32 计时器回调中引发的未处理异常视为未处理异常?

    我一直在追踪工作中一个非常阴险的错误 似乎导致我一直在追踪的非常奇怪的行为的事件似乎是在处理计时器回调时引发的异常 我的任何代码都没有处理该异常 因此我希望调试器能够收到未处理异常的通知 并通过一个令人讨厌的弹出窗口提醒我 不 相反 第一次
  • 有没有办法访问向量中的索引

    我需要访问向量内的索引 单个值 我认为它会类似于 v1 lt c a b c d e v1 3 h 但这似乎根本不起作用 其他人知道该怎么做吗 编辑 好吧 回答你的一些问题 这是我想要实现的总体目标的大图 MyDataR1 lt scan
  • 多线程签名生成C#

    我正在使用符合 PKCS11 标准的加密设备来保护我的私钥 加密设备每秒能够生成 500 个 RSA 2048 位签名 我用 C NET 编写了一个与 PKCS11Interop Wrapper 交互的应用程序 这是我的代码 region
  • Pythonic / Panda 方式创建 Groupby 函数

    我对编程相当陌生 正在寻找一种更Pythonic 的方法来实现一些代码 这是虚拟数据 df pd DataFrame Category np random choice Group A Group B 10000 Sub Category
  • MSBuild 条件执行?

    我正在使用 E g
  • 如何在 Swift 中使带有循环的函数异步?

    我正在为图书馆创建一个应用程序 我正在尝试获取用户从 Firebase 签出的所有书籍 但我尝试使该函数与 DispatchGroup 异步似乎不起作用 我怀疑这是因为函数内部发现了 for in 循环 func fetchHistory
  • CSS固定标题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 我正在尝试将标题固定在顶部 我看过其他帖子并确信我做得正确 这是标题的 CSS header width 100 position fixed top 0px 由于某种原因
  • 验证字符串仅包含 Ruby 中允许的字符

    如何测试 Ruby 字符串是否仅包含特定字符集 例如 如果我允许的字符集是 AGHTM 加数字0 9 字符串 MT3G22AH is valid 字符串 TAR34 is invalid 因为R 一个非常惯用的非正则表达式解决方案是使用字符
  • Cocoapods:未找到库

    我正在尝试运行 Cocoapods 项目并收到以下错误 我尝试过了pod deintegrate进而pod install但它仍然存在 我也尝试删除pod debug xcconfig文件来自Project gt Info gt Confi
  • Spring 数据出现 ne04j 错误...检索路径时出错

    我将 spring 数据与 neo4j 一起使用 I used Query注解将查询放置在存储库中 查询如下 Query value START me node 0 friend node 1 MATCH p shortestPath me
  • 空手道 + 黄瓜报告缺少所调用场景响应的文档字符串

    Cucumber 报告缺少来自调用场景的响应的文档字符串 在给定的场景中 我使用 Call 调用多个场景 它的打印有时会随机响应所调用的场景 有时则不会 这阻碍了我们在测试报告中可视化API之间的数据流 尽管空手道日志有来自该调用场景的响应
  • 避免文本区域行/列错误?

    我正在使用几页验证工具我遇到的一个问题是他们告诉我 textarea 必须有 rows 和 cols 属性 如果我在 CSS 中设置它或使用 display none 并使用它来保存原始文本数据 我可以做一些跳过的事情吗 每次我使用它时 似
  • 删除缺失超过 x% 的列/行

    我想删除所有超过 50 的列或行NAs 在数据框中 这是我的解决方案 delete columns with more than 50 missings miss lt c for i in 1 ncol data if length wh
  • 如何创建一个通用例程来计时方法?

    我需要测量应用程序上下文中许多不同方法的执行情况 NET 当然有 Stopwatch 类 它允许人们使用它的 Start 和 Stop 方法轻松地对一段代码进行计时 然而 以正常方式使用 Stopwatch 类需要我用 Stopwatch
  • 如何等待所有线程完成工作?

    我有以下脚本 不参考内容 import thread def func1 arg1 arg2 print Write to CLI def verify result func1 for in range 4 thread start ne
  • C++ 将 mac id 字符串转换为 uint8_t 数组

    我想从命令行读取 mac id 并将其转换为数组uint8 t在结构中使用它的值 我无法让它工作 我有一个 mac id 分割的字符串向量 我想用stringstream转换他们没有运气 我缺少什么 int parseHex const s
  • 使用本质锁进入块

    我不明白以下代码如何产生似乎违反对象锁定义的输出 当然应该只允许一个线程打印 已获取锁 消息 但它们都这样做吗 class InterruptThreadGroup public static void main String args O
  • addToBackStack 参数为 null 是什么意思?

    我有一个客户代码 所有片段只有一个活动 即单个活动正在管理所有片段 此活动在该片段的方法末尾包含任何片段的以下代码 例如 片段MoreFragment MoreFragment firstFragment new MoreFragment