将片段实例保留在 FragmentPagerAdapter 中

2023-12-11

是否可以保留为某个片段创建的每个片段的实例?FragmentPagerAdapter在 - 的里面FragmentPagerAdapter?

像这样的东西:

@Override
    public Object instantiateItem(ViewGroup container, int position)
        switch(position){
        case 0:
            fragment0 = super.instantiateItem(container, position);
            return fragment0;
        case 1:
            fragment1 = super.instantiateItem(container, position);
            return fragment1;
        default:
            return super.instantiateItem(container, position);
        }
    }

我会遇到内存问题吗?

这个想法是做类似的事情MyFragmentPagerAdapter.fragment0为了获得对片段的引用。


这种方法的问题在于FragmentManager即使您维护引用,也可能会创建片段的新实例。在这种情况下,同一片段的多个实例将位于内存中(泄漏),并且您维护的引用的目标甚至可能不会显示。换句话说,这是不安全的。

然而,安全的是在片段中维护您的活动的引用。

在你的片段中你重写

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    home = (YourFragmentActivity) activity;
}

public void onCreate(Bundle savedInstanceState) {
            home.setThisFragTag(getTag());
    }

在你的 FragmentActivity 中

public void ThisFragTag(String tag) {
    this.fragTag = tag;
}

现在,在您的活动中,您可以获取当前显示的片段实例

(YourFragmentClass) getSupportFragmentManager().findFragmentByTag(fragTag);

您可以对多个片段重复此操作

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

将片段实例保留在 FragmentPagerAdapter 中 的相关文章

随机推荐

  • 将数据类型更改为浮点型并四舍五入到小数点后两位

    Tables people id name job id people id job title salary 目标 显示每个独特的工作 平均工资总额 FLOAT 并四舍五入到小数点后两位 总数 人员及工资总额 浮点数并四舍五入至小数点后两
  • 如何在不选择 ORDER BY 字段的情况下选择 DISTINCT 行

    所以我有两个表学生 PK sID 和导师 PK pID 这个查询 SELECT s pID FROM students s JOIN mentors m ON s pID m pID WHERE m tags LIKE a ORDER BY
  • 如何使用 scanf 读取 nasm x86 64 中的浮点值?

    我试图简单地读取浮点值并使用程序集 x86 64 打印它 因此 当我尝试打印时 我用作 c 函数 scanf 缓冲区的变量价格的值不会改变它 它将打印最初设置的值 因此在下面的代码中 它打印 0 0 因此 scanf 函数无法正确更改价格值
  • 在php中显示链接

    我正在尝试将存储在 mysql 中的 URL 显示为 php 表中的链接 如下所示 echo td a href Resume a td 其中 row resume 使用 mysql fetch array 检索正确的数据 但是 文件链接之
  • 检测地理位置是否在复杂多边形中

    我们目前正在使用以下算法来检测地理点是否位于复杂多边形内 除非多边形穿过 180 经度线 否则效果很好 例如 在多边形中未检测到点 170 60 160 65 0 160 15 0 160 15 0 160 65 0 160 65 0 看下
  • ASP.NET,相当于PHP的Print_r函数吗?

    PHP Print r 对于打印数组和字典集合很有用 asp net 是在这个函数中构建的吗 你可以通过JavaScriptSerializer来实现 var json new JavaScriptSerializer Serialize
  • 安装 libv8 时出错:错误:无法构建 gem 本机扩展

    我做了一个 Rails 项目 rails new test bootstrap 成功了 移动到项目目录并添加宝石 gem therubyracer gem less rails Sprockets what Rails 3 1 uses f
  • Javascript/Typescript 将默认常量导出为异步函数调用的值

    我读了很多书 但还没有找到有效的解决方案 我见过的最接近的是这里 导出React中async函数的结果 请记住 我想导出一个对象 并且该对象是异步函数的结果 而不是导出异步函数定义本身 这是到目前为止我的用例和实现 我们有一个名为 conf
  • 有没有更简洁的正则表达式来完成这个任务?

    首先 对这个蹩脚的标题感到抱歉 但我想不出更好的标题 我需要测试密码以确保以下内容 密码必须至少包含以下 3 项 大写字母 小写字母 numbers 特殊字符 这是我想到的 它有效 但我想知道是否有更好的方法来做到这一点 Dim lower
  • 从 3D Rcpp NumericVector 索引切片

    您好 我有一个关于将 NumericVector 对象视为多维数组的非常简单的 Rcpp 问题 我找不到可能显而易见的答案 如果是这种情况 请先道歉 我对 C 的经验不足是罪魁祸首 如果我使用此处发布的答案 在 Rcpp 中构造 3D 数组
  • Android 支持 JDK 6 或 7 [重复]

    这个问题在这里已经有答案了 我是 Android 开发新手 我可以在 Android 中使用使用 JDK 7 开发的现有 Java 代码吗 这些函数使用 xerces dom xslt 和 xpathapi 目前 当我安装Android E
  • 错误:控制到达非 void 函数的末尾 [-Werror=return-type] } ^

    问题基本上是从给定的 n 个数字生成一个算术表达式 并且该表达式应该能被 101 整除 我们只能有 运算符 并且表达式是左关联的 我已经尝试了所有可用的解决方案 这些解决方案已经在堆栈溢出中提到过 例如用 else 关闭表达式等等 bool
  • Vbscript msxml12.XMLHTTP错误处理

    我使用这个 vbscript 代码来下载网页 Dim oXML Set oXML CreateObject msxm12 XMLHTTP oXML Open GET mysite com False oXML Send 如果没有这样的网站
  • PHP REGEX - 通过 preg_split 在换行符处将文本转换为数组

    EDITED 需要有关拆分数组的帮助 数组示例 array 0 gt some normal text some long text here and so on sometimes i m breaking down and some n
  • TFSPreview.com 和 Azure 持续部署 TFS 中的多个解决方案

    我最近尝试了 Microsoft 的 TFS in the cloud 服务 TFSPreview com 感觉 TFS 团队终于 明白了 TFSPreview com 可能会让我们从 GIT bug 跟踪器 powershell 切换过来
  • 如何在多列上创建索引

    我们有以下实体关系 其中用户属于特定组织 我的查询看起来像 select from User where org org 或 select from User where org org and type type 我在 User 类上有单
  • 是否可以将 Nesta CMS 包含到 Rails3 应用程序中?

    我想将 Nesta CMS 应用程序 安装 到 Rails3 应用程序上 这可能是 Nesta Sinatra 应用程序的原因 它应该是机架可安装层 但是您会怎么做 你将从哪里开始 有人有关于这个话题的经验吗 建议的文档 嘿卢卡 我一两个月
  • R中如何使用函数名的字符串来调用函数?

    我正在尝试使用给定的函数名称字符串来调用函数 E g print funcList 1 2 sin works mult lt mult 5 6 1 30 不起作用 func1 lt funcList 1 func1 5 6 func2 l
  • 从 URL 获取 HTTP 响应代码的最佳方法是什么?

    我正在寻找一种从 URL 获取 HTTP 响应代码 即 200 404 等 的快速方法 我不确定要使用哪个库 更新使用精彩请求库 请注意 我们使用的是 HEAD 请求 它应该比完整的 GET 或 POST 请求发生得更快 import re
  • 将片段实例保留在 FragmentPagerAdapter 中

    是否可以保留为某个片段创建的每个片段的实例 FragmentPagerAdapter在 的里面FragmentPagerAdapter 像这样的东西 Override public Object instantiateItem ViewGr