gpt4 book ai didi

android - 何时使用 FragmentManager::putFragment 和 getFragment

转载 作者:IT王子 更新时间:2023-10-29 00:01:29 32 4
gpt4 key购买 nike

我有一个使用 fragment 的应用程序,我正在研究如何在具有双 Pane 的 Activity 和作为独立的 Activity 中使用相同的 fragment 。仍然不确定完成此操作的最佳方法,但我注意到 FragmentManager 具有 putFragment 和 getFragment 函数。让我感到困惑的是,您必须为 get 和 put 函数提供一个 Bundle 作为参数。不同的 Activity 如何具有相同的Bundle?显然,您可以将 Bundle 作为参数传递,但那时我觉得您只是把事情搞砸了。

那么什么是使用 getFragment 和 putFragment 的好场景呢?请附上Bundle参数说明。

最佳答案

基本答案:

这些仅在实现 onSaveInstanceState() 并在 onCreate() 中恢复该状态时有用。如果你没有实现 onSaveInstanceState(),你可以忘记这些方法,假装它们不存在。

他们正在解决的问题:如果您想在“已保存的实例状态”中保存对 fragment 的引用,您不能只在其中放置对象引用。首先是因为您不能将普通对象放入 Bundle 中。 :) 这样做的原因是,保存状态的目的是将其复制出您的进程,因此如果您的进程需要被终止,则可以稍后将其复制回新进程以供您重新- 初始化您的 Activity/fragment 。原始对象仅在其运行的进程的上下文中才有意义,因此无法正确地将对此类对象的引用从当前进程复制到另一个进程。

所以 putFragment()/getFragment() 所做的就是在给定的 Bundle 中放置一条数据,该数据可以识别该 fragment 到另一个进程中的 Activity/fragment 的新实例。这个表示究竟是什么,没有定义,但在当前实现中,它是该 fragment 的内部整数标识符,稍后将在 FragmentManager 需要从先前保存的状态重新创建该 fragment 时使用......它是使用相同的标识符重新创建,因此当您调用 getFragment() 时,它可以检索整数,并使用它来确定正确的 Fragment 对象以返回与先前保存的对象对应的调用者。

关于android - 何时使用 FragmentManager::putFragment 和 getFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446961/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com