如何从 TabHost Activity 返回结果 (startActivityForResult)?

2024-02-20

我的示例中有 3 个类: A 类,主要活动。 A类调用startActivityForResult:

Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");

B类,这个类是一个TabActivity:

Intent intent = new Intent(this, ClassC.class);
tabHost.addTab...

C类,这个类是一个常规的Activity:

Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();

A类中调用了onActivityResult,但resultCode为RESULT_CANCELED代替RESULT_OK并且返回的意图为空。如何从 TabHost 内的 Activity 返回某些内容?

我意识到问题是我的 C 类实际上在 B 类内部运行,而 B 类返回的是RESULT_CANCELED回到 A 类。我只是还不知道解决方法。


天啊!经过几个小时的下载 Android 源代码后,我终于找到了解决方案。

如果你看一下 Activity 类,你会发现,finish()方法仅在存在时返回结果mParent属性设置为null。否则结果就会丢失。

public void finish() {
    if (mParent == null) {
        int resultCode;
        Intent resultData;
        synchronized (this) {
            resultCode = mResultCode;
            resultData = mResultData;
        }
        if (Config.LOGV) Log.v(TAG, "Finishing self: token=" + mToken);
        try {
            if (ActivityManagerNative.getDefault()
                .finishActivity(mToken, resultCode, resultData)) {
                mFinished = true;
            }
        } catch (RemoteException e) {
            // Empty
        }
    } else {
        mParent.finishFromChild(this);
    }
}

所以我的解决方案是将结果设置为父活动(如果存在),如下所示:

Intent data = new Intent();
 [...]
if (getParent() == null) {
    setResult(Activity.RESULT_OK, data);
} else {
    getParent().setResult(Activity.RESULT_OK, data);
}
finish();

如果有人再次寻找此问题的解决方法,我希望这会有所帮助。

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

如何从 TabHost Activity 返回结果 (startActivityForResult)? 的相关文章

  • TypedArray 的 getResourceId 方法

    我正在阅读有关的文档获取资源Id https developer android com reference android content res TypedArray html getResourceId int 20int 方法 它说
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 如何获取.so文件的依赖项列表?

    假设我有libFoo so为 android arm 编译 我不确定它链接到什么STL实现 有options http developer android com intl ru ndk guides standalone toolchai
  • ProGuard 无法与 Windows 中使用的 Joda Time 一起编译

    实际上 这是一个答案 而不是一个问题 我确实在 Windows 上花了很多时间 使用 JodaTime 并使用 ProGuard 将其包含在我的 Android 项目中 混淆器配置 libraryjars C Users Reto Docu
  • 使用 RecyclerView 适配器在运行时更改布局屏幕

    我有两个布局文件 如下所示 如果列表中存在数据 则我显示此布局 当列表为空时 我会显示此布局 现在我想在运行时更改布局 当用户从列表中删除最后一项时 我想将布局更改为第二张图片中显示的 空购物车布局 In getItemCount Recy
  • 应用内结算错误

    我的 UNMANAGED 应用内购买无法正常工作 在它完美运行之前 我可以使用测试帐户成功购买 但它突然不起作用了 因为我记得我对商家帐户所做的只是添加更多 2 4 个测试帐户 添加后 我的应用内购买将不起作用 所以我更新了公钥并上传了一个
  • Firebase ANR - 甚至不使用 firebase

    随着 GMS 的最新更新 引入了新的 ANR 如果您退出应用程序 然后返回 则 ANR 就会初始化 线程跟踪似乎指向 Firebase 但我什至从未开始使用 Firebase 我猜它一定是新的 GMS 包的一部分 06 11 00 34 0
  • 导航抽屉默认片段

    我是一名新手开发人员 我正在将导航抽屉与 android support v7 集成到我的应用程序中 我有一个问题 当我启动应用程序时 主要布局是这样的
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • 如何在进入新活动之前终止线程和处理程序

    大家好 在我尝试清理处理程序时 这段代码可能有点混乱 因为我一直在尝试追踪崩溃发生的位置 我有一个对话框活动 显示密码输入 进度条由线程和处理程序动画显示 似乎当我试图查看进度条是否完成并尝试终止线程时 当我尝试进入新活动时 我这样做的方式
  • java.lang.IllegalArgumentException:找不到片段的 id 0x1020002 (android:id/content) 的视图

    我正在尝试从一个片段移动到另一个片段 它在片段事务期间显示以下错误 java lang IllegalArgumentException No view found for id 0x1020002 android id content f
  • Android Studio IDE 上的“文本/设计”选项卡缺少新的 Android 项目

    如何在创建新项目期间自动创建的 Activity main xml 文件的 src main res layout 文件夹中启用文本 设计选项卡 如果我右键单击并在所述文件夹上创建 xml 文件 则设计 文本选项卡存在 有什么建议吗 谢谢
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 在Android Studio中更改项目主题?

    我使用浅色主题创建了一些项目 现在我想将其更改为深色 但我不知道该怎么做 顺便说一句 我不是问如何在代码中做到这一点 只是问如何更改项目的默认主题 在 AndroidManifest xml 的 application 标签下 您可以设置您
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • android httprequest java.net.UnknownHostException

    我想用android发出http请求 是使用这个 void testHTTP HttpClient httpClient new DefaultHttpClient HttpUriRequest request new HttpPost h
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • Android 自定义警报对话框中的 OnClickListener

    我是一个自学成才的初学者 感谢耐心 谢谢 在 Eclipse 中 我使用自己的 xml 文件 custom dialog 创建了一个自定义警报对话框 称为 usernamealert 如果用户尚未输入用户名 即 username lengt

随机推荐

  • 有没有办法在Python中获取对象的当前引用计数?

    有没有办法在Python中获取对象的当前引用计数 根据Python文档 https docs python org dev library sys html sys getrefcount the sys模块包含一个功能 import sy
  • 清理 Objective-C 代码

    在处理复杂问题时 我发现自己尝试了各种解决方案 尽管尽最大努力保持条理清晰 但代码可能会变得相当混乱 对象可能会被更改并且不再使用 而其他时候我可能会添加代码片段 这些代码片段最终不会被程序使用 但会占用空间和可能的内存 除了仔细阅读程序之
  • install.packages 中的警告:无法移动临时安装

    在 R RStudio 中安装或更新软件包时 我发现了许多与此警告相关的问题 但似乎没有一个问题完全符合我的情况 公司Windows 7系统 因此无管理员权限 无法更改迈克菲防病毒例外列表 R完全安装在用户空间中C Users myname
  • 在Scheme中let和let*有什么区别?

    我正在为 GIMP 编写脚本并使用let 就像我采集的样本一样 但它似乎只是一种 lambda 糖 就像let 为什么它们不同 它们之间有什么区别 它们在变量绑定的顺序上有所不同 例如考虑这个 gt let a 1 b a 2 b 此代码将
  • 没有导出成员

    我是打字稿的新手 我正在使用express js 但遇到以下问题 当我运行服务器时 它显示 routes ts 没有导出的成员 路由器 我一直在寻找但没有成功 这些是我的文件 在我的 src index ts 中 import reflec
  • 用户输入仅需等待 5 秒

    我想在 Turbo C 4 5 编辑器中编写一个简单的 C 程序 这样用户输入只需等待 5 秒 举个例子 include
  • 在 Eclipse 中调试时动态查看画布/位图

    有没有办法在 Eclipse 上调试画布 位图 我想知道当我在特定行设置断点时是否可以查看当前画布 位图的外观 现在可以在调试时查看位图 尽管仅适用于 Android Studio 来自版本 0 8 7 的发行说明 http tools a
  • 如何查找 C# 项目中的所有硬编码值(解决方案)?

    这个问题不仅仅询问硬编码字符串 还询问幻数等 有没有办法找到所有硬编码值即字符串 神奇的数字VS 中的 C 项目 解决方案中没有什么 引发这个问题的是我正在查看的一个项目 我刚刚发现一个字符串值被硬编码重复了 174 次 你能做的就是编程R
  • Visual Studio 2012 中有没有办法在调试 c# 时使用 F# REPL

    如果我在 C 程序中有一个断点 我希望使用 F REPL 来检查我的 代码 这有可能吗 您应该能够使用 F REPL 调试 C 项目 我在调试 F 库项目时这样做 但 C 应用程序 库也可以工作 我认为 编译您的 C 项目 在 F 交互式中
  • ASP.NET -> WCF 并发问题

    我正在开发一个基于 Ajax 的应用程序 该应用程序大量使用对与数据库通信的 WCF 层的服务器调用 每当我在短时间内从客户端 ASP NET 页面 对底层 WCF 服务进行多次调用时 系统就会挂起并进入空闲状态 我该如何处理这样的并发问题
  • 如何使用 insertRow() 为 TableRow 提供 ID?

    var table document getElementById table1 var tr table insertRow var td tr insertCell td innerHTML document getElementByI
  • 无法设置未定义的属性“$render”

    请需要有关此错误 无法设置未定义的属性 render 的帮助 我知道这个问题已经被问过 但我无法解决 scope editmode false scope toggleEditMode function scope editmode sco
  • 在 ubuntu core 14.04 上安装 libboost-all-dev 时依赖失败

    有人知道为什么我在 sudo apt get install libboost all dev 之后得到以下信息 Some packages could not be installed This may mean that you hav
  • 如何使用 C++ 自动打开文件夹中的第一个文件?

    如何在不知道文件名的情况下从 C 应用程序自动打开并读取给定目录中的文件内容 例如 程序的粗略描述 include iomanip include dirent h include fstream include iostream incl
  • 对数组的相同对象求和

    var data id 1 qty 100 id 2 qty 200 id 1 qty 100 id 2 qty 200 如何将这个数组求和变为 id 1 qty 200 id 2 qty 400 Thx 尝试这个 var sum data
  • 我可以在 PHP switch 语句中使用逻辑“或”吗?

    是否可以在 switch case 中使用 or 或 and 这就是我所追求的 case 4 5 echo Hilo break 不 但你可以这样做 case 4 case 5 echo Hilo break See the PHP手册 h
  • 创建可用于所有包的 Symfony2 帮助器类的正确方法

    我正在为我的模型实现 ACL 系统 并且我想将公共代码提取到公共 Helper 类中 我找不到任何如何正确执行此类操作的示例 但我不断发现有必要这样做 例如 假设在我的控制器中我有一段代码 直接取自文档 creating the ACL a
  • 如果 str1 的一部分可以重新排列为 str2,如何编写一个返回 true 的函数?

    我对以下问题遇到困难 我基本上必须编写一个代码 函数 如果 str1 的一部分可以重新排列为 str2 则返回 true 编写函数 scramble str1 str2 如果 str1 字符的一部分可以重新排列以匹配 str2 则返回 tr
  • 在iPhone应用程序升级上部署sqlite DB

    我在 iPhone 应用程序中使用 sqlite 作为数据源 我有两个关于应用程序升级的问题 1 数据都是配置 非事务性的 意思是 它是只读的 当我更新 添加配置数据时 我将发布应用程序的升级 当用户获得更新的 iPhone 应用程序时 原
  • 如何从 TabHost Activity 返回结果 (startActivityForResult)?

    我的示例中有 3 个类 A 类 主要活动 A类调用startActivityForResult Intent intent new Intent this ClassB class startActivityForResult intent