子活动完成时有时不会调用 onActivityResult

2024-02-12

在测试过程中,我注意到有时子活动的 finish() 不会执行 onActivityResult。大多数时候它工作正常,但我无法弄清楚这个问题何时以及为何发生。

子活动开始:

public void launchSubActivity(Class<? extends Activity> subActivityClass, Bundle data,
        OnSubActivityResult callback) {

    Intent i = new Intent(this, subActivityClass);
    if(data!=null) i.putExtras(data);

    Random rand = new Random();
    int correlationId = rand.nextInt();

    _callbackMap.put(correlationId, callback);

    startActivityForResult(i, correlationId);

}

子活动完成:

public void select() {
    Bundle b = new Bundle();
    b.putInt("YEAR", year_result);
    b.putInt("MONTH", month_result);
    b.putInt("DAY", day_result);
    this.getIntent().putExtras(b);
    this.setResult(RESULT_OK, this.getIntent());
    this.finish();
}

onActivityResult(通过纳兹穆尔·伊德里斯 http://developerlife.com/tutorials/?p=302):

/**
 * this is the underlying implementation of the onActivityResult method that
 * handles auto generation of correlationIds and adding/removing callback
 * functors to handle the result
 */
@Override
protected void onActivityResult(int correlationId, int resultCode,
        Intent data) {

    Log.d(Prototype.TAG, "SimpleActivity Result "+resultCode);

    try {
        OnSubActivityResult callback = _callbackMap.get(correlationId);

        switch (resultCode) {
        case Activity.RESULT_CANCELED:
            callback.onResultCancel(data);
            _callbackMap.remove(correlationId);
            break;
        case Activity.RESULT_OK:
            callback.onResultOkay(data);
            _callbackMap.remove(correlationId);
            break;
        default:
            Log.e(Prototype.TAG,
                    "Couldn't find callback handler for correlationId");
        }
    } catch (Exception e) {
        Log
                .e(Prototype.TAG,
                        "Problem processing result from sub-activity", e);
    }

}

也许您有一些开发人员选项,例如终止活动标志或限制后台进程。

进入设置->开发者选项,取消选中Don't keep activities and Background process limit设置为标准限制。

如需额外信息,请检查https://stackoverflow.com/a/14195833/779408 https://stackoverflow.com/a/14195833/779408 and https://stackoverflow.com/a/11522468/779408 https://stackoverflow.com/a/11522468/779408

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

子活动完成时有时不会调用 onActivityResult 的相关文章

随机推荐

  • php DOMDocument 添加带有 DOCTYPE 声明的 标头

    我通过 DOMDocument 类向每个链接添加 b 哈希 dom new DOMDocument dom gt loadHTML output a tags dom gt getElementsByTagName a foreach a
  • PDF 到 bmp 图像(12 页 = 12 张图像)

    我必须逐页解构 提取 pdf 为位图图像 这将通过我设置的网络服务在服务器上完成 我怎样才能做到这一点 它必须一页一页地显示 每张图像一页 我真的很困惑 我知道你们中的一位天才已经找到了我一直在寻找的答案 我努力了 http www pdf
  • IntelliJ IDEA:“无法解析 String、System 和其他 Java 类的符号”

    我最近将 IntelliJ IDEA 下载到另一台计算机上 在一台计算机上它工作正常 在另一台计算机上它给了我这个当前问题 当我使用模板打开一个新项目时 它会自动在各处显示错误 即使它允许代码运行并正确显示输出 标准 Java 库类 例如S
  • 机械化如何获取当前 url

    我有这个代码 require mechanize agent Mechanize new page agent get http something com page 1 next page page link with href gt p
  • Docker Tomcat容器无法访问Postgres容器

    我有一个带有 postgres 的 alpine docker 带有监听地址 并监听 5432 我正在使用它进行部署 docker run d name postgres me postgres v1 以及带有 oracle jre8 的
  • Sequelize 在查询中返回连接表

    我的 MSQL 表中这两个模型之间存在多对多关系 场所 代表可以有多个所有者 员工 的场所 员工 代表员工 可以是首席执行官或销售员工或任何其他人员 我在用续集 questions tagged sequelize像这样建立关系 关系员工
  • sed 命令中的破折号 e(-e) 是什么意思?

    我是 sed 的新手 总是在输入文件上执行一个命令 最近我尝试使用 e 要处理多个命令 但我无法弄清楚它是如何工作的 默认打印非常烦人 所以我无法弄清楚命令的执行顺序 sed e command 1 e command 2 input tx
  • 原子整数incrementAndGet()线程安全吗?

    原子整数incrementAndGet 方法线程安全吗 我没有看到其中使用同步关键字 我使用以下代码来生成唯一 ID public enum UniqueIdGenerator INSTANCE private AtomicLong ins
  • python:读取json并循环字典

    我正在学习 python 我像这样循环将 json 转换为字典 它可以工作 但这是正确的方法吗 谢谢 import json output file open output json read output json json loads
  • 启动集群时在 EMR 上配置 Zeppelin 的 Spark 解释器

    我正在 EMR 上创建集群并配置 Zeppelin 以从 S3 读取笔记本 为此 我使用一个 json 对象 如下所示 Classification zeppelin env Properties Configurations Classi
  • 无法使用 PowerMockRunner 运行 JUnit 测试

    我有一个基于 Gradle 的 Java 项目 我现在想使用 PowerMock 模拟私有方法 问题是我无法使用 PowerMockRunner 因为当我添加 RunWith org powermock modules junit4 Pow
  • 逻辑表达式解析器

    我正在尝试为以下表达式创建一个逻辑表达式解析器 变量A gt 变量B 而不是变量C 对于给定的变量值 解析器应该能够返回结果是 true 还是 false 基本上 表达式仅包含变量 逻辑运算符 或 与 蕴涵 等价 否定和括号 我想问实现这种
  • 将属性文件中的所有键和值作为 Spring 中的 Map 注入

    有人可以提供一些想法来注入属性文件中的所有动态键和值并将其传递为Map to DBConstants使用 Setter 注入和 Collection 的类 密钥事先未知并且可能会有所不同 Example Property File that
  • Maven 不执行任何单元测试

    我正在使用带有多模块的 Maven 有3个项目 foo the parent project foo core foo bar 我配置了所有依赖项和插件foo s pom
  • 我们什么时候以及为什么需要ApplicationRunner和Runner接口?

    我正在学习Spring引导 有哪些典型用例ApplicationRunner或任何跑步者界面 import org junit jupiter api Test import org springframework boot Applica
  • 在 python 中将文件路径作为命令行参数传递

    我需要在文件中写入一些内容 我通过 python 命令行传递这些内容 我正在使用下面的代码mycode py import csv import sys path sys argv 1 row 4 Danny New York with o
  • Spring MVC:进行 AJAX 调用后在对话框中显示数据

    我是 Spring 和 Web 技术的新手 我有一个表 其中包含带有超链接的列 当我单击一行的超链接时 我需要在对话框中显示该行数据以及其他详细信息 我的控制器方法返回一个ModelAndView其中包含我需要显示的数据和显示页面 问题 如
  • 三星中的InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS

    在我的应用程序中 我有一个EditText 带有一个按钮来更改键盘输入类型 代码 ToggleCambiarTeclado setOnClickListener new OnClickListener Override public voi
  • 曾经有效的相同代码现在返回异常

    我正在尝试在几个股票代码之间进行简单的关联 我之前运行过相同的代码并且有效 现在 它返回一个异常 该异常引用了一堆文件并包含我不理解的其他消息 此外 必须在控制台中手动停止该命令 我对 python 和一般编程都很陌生 我正在使用 Spyd
  • 子活动完成时有时不会调用 onActivityResult

    在测试过程中 我注意到有时子活动的 finish 不会执行 onActivityResult 大多数时候它工作正常 但我无法弄清楚这个问题何时以及为何发生 子活动开始 public void launchSubActivity Class