方向更改后未调用 Fragment 的 onActivityResult

2024-03-29

请注意,此问题与以下问题不重复:

  • https://stackoverflow.com/questions/19006776/onactivityresult-not-working-with-fragments https://stackoverflow.com/questions/19006776/onactivityresult-not-working-with-fragments
  • onActivityResult 不适用于片段 https://stackoverflow.com/questions/19005193/onactivityresult-not-working-on-fragments

另外,还有一个类似的问题 https://stackoverflow.com/questions/17270594/activity-result-no-fragment-exists-for-index-after-facebook-publish之前被问过,但没有提到方向变化(并且尚未解决)。

My onActivityResult方法中的Fragment如果我不改变方向,就会被叫到。但是,如果我按照以下步骤操作,则不会调用它:

  1. 在 FragmentActivity 中加载片段。
  2. 从片段来看:startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), Constants.REQ_CODE_IMAGE_CAPTURE);
  3. 等待相机加载。
  4. 切换方向。
  5. 拍照并单击复选标记。

onActivityResult仍然在父 FragmentActivity 中被调用。但是,由于此警告,我收到:

W/FragmentActivity(4418): Activity result no fragment exists for index: 0x22d73

...我的猜测是,由于方向变化,父级被破坏,并且在重新创建后,找不到Fragment那个叫startActivityForResult首先。

这是一个框架错误吗?如何解决这个问题?

EDIT:由于大众的需求添加了更多代码。

FragmentActivity.java:

...

fragment = new ExampleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace (R.id.mainContentView, fragment);
if (clearBackStack) {
    // clear the back stack
    while (getSupportFragmentManager().popBackStackImmediate ());
    // add the current transaction to the back stack
    transaction.addToBackStack (null);
}
else {
    transaction.addToBackStack(null);
}
transaction.commit();

...

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);
}

示例Fragment.java:

Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, Constants.REQ_CODE_IMAGE_CAPTURE);

...

@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    switch (requestCode) {
    case Constants.REQ_CODE_IMAGE_CAPTURE:
        // handle added image
    }
}

通过移动所有的解决了这个问题onActivityResult逻辑从Fragment to the Activity.

Do note然而,reqCode被传递到Fragment不同于reqCode被交付给父母Activity(那个为Activity我认为是系统设置的)。这意味着我还必须移动原来的startActivityForResult呼叫来自Fragment to the Activity,然后创建一个方法来调用它Fragment需要的时候。

如果有人找到更优雅的方式,我会很高兴听到。

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

方向更改后未调用 Fragment 的 onActivityResult 的相关文章

  • Android viewpager:添加/删除页面时出现奇怪的错误

    我不知道如何解释 所以我上传了一个视频Youtube http www youtube com watch v o5sn31IX Gc当我添加页面时一切正常 如果我从列表末尾开始并逐渐移至第一页 则删除页面也有效 但如果我删除 0 端之间的
  • Android 2.1:如何轮询现有蓝牙连接的 RSSI 值?

    我需要知道使用 Android 2 1 手机与远程设备建立蓝牙连接的信号强度 从SDK中 我可以看到我可以在发现远程设备时确定RSSI 但我不知道如何随着时间的推移更新该 RSSI 值 有人可以帮我吗 谢谢 从 SDK 中这是获取 RSSI
  • AppCompat DayNight 主题始终显示为 Light 主题?

    我正在使用 AppCompat 中引入的新 Theme AppCompat DayNight 主题版本23 2 http android developers blogspot com 2016 02 android support lib
  • 使用 Android L Notification.MediaStyle 添加终止播放按钮

    我想使用新的 Android L MediaStyle 模板创建媒体播放通知 现在 我成功地完成了上一个 播放 暂停 下一个等操作 通过使用addAction 但我找不到像中那样添加 关闭 按钮的方法Android 通知文档 http de
  • 迁移到 AndroidX 后,应用程序崩溃并尝试在空引用上调用 androidx.fragment.app.FragmentManagerImpl.isDestroyed()

    完整的堆栈仅包括 android 核心代码 java lang NullPointerException Attempt to invoke virtual method boolean androidx fragment app Frag
  • Android/iOS 上的相机远程快门如何工作?

    我最近在 Android iOS 上遇到了一个使用蓝牙的内置相机应用程序的远程快门 这是我找到的产品的示例链接 Link http www youtube com watch v cyVG76HDvh4 不是来打广告的 只是简单了解背后的技
  • Android BuildConfig 字段错误生成字符串

    在开始新项目的最后一天 我在构建配置中创建了一些变量 作为在发布和调试构建之间单独处理它们的好习惯 如下所示 buildTypes release minifyEnabled false buildConfigField String PA
  • 从源代码定制 Android 彩信/短信应用程序?

    好的 这是交易 我想下载 Android 手机附带的彩信 短信应用程序的完整源代码 我希望能够对其进行修改 并向其添加一些自定义功能 我正在使用 Eclipse 进行开发 并且使用的是 Windows 7 我注意到现在有一 个适用于 Win
  • GCM 条款和条件

    有谁知道在哪里可以找到有关哪些内容可以通过 GCM 通知发送以及哪些内容不可以发送的条款和条件 我似乎在任何地方都找不到任何文档 当您注册开设 Google API 帐户时 您会得到这些条款和条件 https developers goog
  • 将 SearchView 阈值设置为零

    我在用SearchView在android中 我将适配器设置为搜索视图 但建议弹出框在一个字符后显示 因为我将阈值设置为1 它不接受小于1的数字 如何将阈值设置为零 请喜欢 Google 因为您可能知道 Google Play 的应用程序没
  • 在视图上按下按键时不会调用 onKeyDown

    我有一个包含两个视图的活动 一个视图重写 onDraw 并正确处理 onTouchEvent 但是当我尝试检索第二个视图的 onKeyDown 时 它没有给我任何结果 相反 当我按下后退按钮或任何其他键盘按钮时 会调用 onKeyDown
  • 安装我的应用程序时的 android 意图

    安装我的应用程序时我需要执行一项操作 我研究过使用 Intent PACKAGE ADDED 但我没有收到正在安装的应用程序中的意图 我想在第一次安装我的应用程序时运行代码 该用例是注册在线服务 我可以列出 BOOT COMPLETED 如
  • android:configChanges 清单文件中不允许错误字符串类型

    这是我的清单文件 其中显示 android configChanges 不允许的错误字符串类型 请帮助我纠正错误 下面是我的清单文件
  • 消费者关闭了输入通道或发生错误。事件=0x8

    D AndroidRuntime 11752 D AndroidRuntime 11752 gt gt gt gt gt gt AndroidRuntime START com android internal os RuntimeInit
  • BLE:使用 Android / iOS 读取长特征值

    对于正常的特征读取 仅读取 MTU 大小 20 字节 的数据 我的客户将提供更大尺寸 超过 100 字节 的特征 我看到 BLE 提供了 长读取 功能 可以读取直到达到特征的大小 https bluegiga zendesk com ent
  • 当按下 flutter 中编写的按钮时,有没有办法运行 python 脚本?

    本质上 我想做的是 按下我在 Flutter 中编程的按钮 当按下该按钮时 Python 脚本应该开始在我的 Android 设备上运行 我想在 python 中使用 youtube dl 用于下载 Youtube 视频 库 但我想知道是否
  • Android数据库访问设计方法

    我有一个关于数据访问的一般 Android 设计问题 我的应用程序中有许多活动需要访问 SQLite 数据库 为了将所有数据访问逻辑包装在一个地方 我创建了一个 DatbaseHandler 类来处理所有数据访问逻辑 此类负责构建 wher
  • 如何:获取 AVD 的端口号并向其自身发送消息

    我该如何执行以下操作 获取我的 AVD 的端口号 从我的代码而不是命令行 使用步骤 1 中获得的端口号从 AVD 向自身发送消息 这是可能的 模拟器可以给自己发送短信吗 https stackoverflow com questions 8
  • Flury 分析可以提供整数信息的平均值吗?

    我需要将 Flurry 与 Android 集成 并想知道用户将在主屏幕上停留多长时间 以分钟为单位 使用 Flurry 可以得到这样的分析吗 当我检查 Flurry 时 它为我提供了特定屏幕上点击计数的统计数据 我想知道的是用户在主屏幕上
  • Phonegap - 自动包含正确的科尔多瓦

    我正在 iOS 和 Android 上开发一个 PhoneGap 应用程序 并使用 git 控制我的 www 目录版本 我知道我的 HTML 文件需要包含正确的 Cordova js 文件 取决于我当前正在开发的平台 当有人在 Androi

随机推荐

  • 不幸的是 已停止

    所以我不知道关于双重帖子的规则是什么 任何我在其他问题上没有得到后续支持的人 任何我的问题被陈述的人 这是我的 logcat 05 28 19 45 03 464 I ActivityManager 274 Start proc xela
  • UnicodeEncodeError:“ascii”编解码器无法对位置 47 中的字符 u'\u2019' 进行编码:序数不在范围内(128)

    我正在使用 Python 2 7 和 MySQLdb 1 2 3 我尝试了在 stackoverflow 和其他论坛上找到的所有内容来处理我的脚本抛出的编码错误 我的脚本从源 MySQL 数据库中的所有表中读取数据 并将它们写入 pytho
  • django modelformset_factory 中的 MultiValueDictKeyError

    我正在尝试实现一个编辑表单集 然后 我使用 modelformset factory 实例化表单集中的对象 当请求不是 POST 时 表单集会完美加载 但是 如果请求是 POST 则表单集构造函数会引发 MultiValueDictKeyE
  • 出口交易需要客户名称和地址 - Stripe 错误

    我正在使用 stripe SDK 创建客户并使用 API 向客户收费 但出现错误 致命错误 未捕获 状态 400 请求 req ZyqUtykjUcOqrU 根据印度法规 出口交易需要客户名称和地址 更多信息请参见 https stripe
  • SQL Server 逆透视两列

    我正在尝试旋转表格以获得 3 列 我的示例表如下 CREATE TABLE tbl1 A1 int cA1 int A2 int cA2 int A3 int cA3 int GO INSERT INTO tbl1 VALUES 60 2
  • Wt C++ Web 框架的主机,部署问题

    我想知道 justhost com 是否足以托管 Wt C 网站 应用程序 它确实允许 FTP 和 SSH 访问http richelbilderbeek nl CppWtDeployGlobalHosted htm http richel
  • pyinstaller 是否有像 gcc -static 这样的参数?

    我有一个类似的问题 有没有办法将 Python 程序编译为二进制并将其与 Scratch Dockerfile 一起使用 https stackoverflow com questions 62581924 is there a way t
  • 在给定图上绘制水平线

    如何向现有绘图添加水平线 Use axhline https matplotlib org stable api as gen matplotlib pyplot axhline html 水平轴线 例如 这会在以下位置绘制一条水平线y 0
  • GUI 中的 __init__ 与 tkinter

    我正在学习使用 Tkinter 使用 python 创建简单的 GUI 我目前正在使用 python 文档作为参考 link http docs python org 2 library tkinter html 我想做的第一件事是理解那里
  • Spark:从 RDD[X] 生成所有可能组合的 RDD[(X, X)]

    Spark 中是否可以从 scala 集合中实现 combinations 函数 Iterates over combinations return An Iterator which traverses the possible n el
  • 矩阵/向量乘法顺序

    我在网上阅读了十几篇关于 OpenGL 中旋转 平移和缩放矩阵乘法的正确顺序的文章 然而 现在我开始自己实现它 我真的很困惑 假设在我的代码中我正在计算变换矩阵 并将其作为一个结果矩阵传递给着色器 shader SetUniform u M
  • 我可以使用 vue test utils 通过 ref 选择一个元素吗

    如果我有一张图片 img class pineapple src pineapple jpg 我可以使用 ref expect wrapper find refs pineapple exists toBe true 代替 expect w
  • 使用 iTextSharp 提取路径和形状

    iTextSharp 支持创建形状和路径PdfContentByte类 您可以在那里设置颜色并绘制曲线和基本元素 是否有一种机制可以以其他方式执行 我可以通过致电获取内容PdfReader GetPageContent 但我没有找到一个 解
  • 如何将数据帧行分组到pandas groupby列表中

    给定一个数据框 我想对第一列进行分组 并将第二列作为行中的列表获取 这样数据框如下 a b A 1 A 2 B 5 B 5 B 4 C 6 becomes A 1 2 B 5 5 4 C 6 我该怎么做呢 您可以使用以下方法执行此操作gro
  • 对顺序 SQL 记录进行分组

    寻找一种将连续时钟记录分组到单行中的方法 源系统具有身份列 员工 ID 日期和输入 输出标志 1 输入 2 输出 请注意 ID EmployeeID DATE InOut 1019374 5890 2008 08 19 14 07 14 1
  • 如何在 Pytube 中结合音频和视频?

    我正在尝试编写一段代码 在 Python 3 6 上使用 Pytube 下载 YouTube 视频 但对于大多数视频 渐进式下载 同一文件中的音频和视频 格式最多只能提供 360p 所以我想分别下载音频和视频文件 然后合并起来 我能够下载音
  • 在不更改值顺序的情况下对因子的级别进行重新排序

    我有包含一些数值变量和一些分类变量的数据框factor变量 这些因素的级别顺序不是我想要的方式 numbers lt 1 4 letters lt factor c a b c d df lt data frame numbers lett
  • 合并后,如何跟踪提交的来源?

    我的公司不维护存储库git 我们有效地使用 CVS 但为了我自己的理智 我在本地保留了一个存储库 过去 我想提出与以下相关的提交 bug report abcde 我可以通过 grep 查找提交消息bug report abcde并浏览它们
  • 将 apk 上传到市场时出现错误

    发生意外错误 请稍后再试 是我在 我尝试上传我签名的apk 完成应用程序后 我使用导出签名应用程序工具来生成密钥 为什么我会收到此错误 我发现只需退出并返回即可解决我的问题 使用火狐浏览器
  • 方向更改后未调用 Fragment 的 onActivityResult

    请注意 此问题与以下问题不重复 https stackoverflow com questions 19006776 onactivityresult not working with fragments https stackoverfl