首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

androidx中已弃用的OnActivityResult()

在Android开发中,androidx是一个用于支持库和工具的开源项目,旨在简化Android应用程序的开发过程。在androidx中,OnActivityResult()方法已被弃用。

OnActivityResult()方法是在Activity中使用的一个回调方法,用于处理从其他Activity返回的结果。它通常与startActivityForResult()方法一起使用,用于启动另一个Activity并等待其返回结果。

然而,在androidx中,推荐使用新的ActivityResultContract API来处理Activity之间的结果传递。ActivityResultContract API提供了一种更简洁、类型安全的方式来处理ActivityResult,并且可以更好地与Jetpack组件集成。

使用ActivityResultContract API,您可以定义一个合同(Contract),该合同指定了输入和输出的类型,并定义了如何启动目标Activity以及如何处理返回的结果。这种方式更加灵活,易于维护和测试。

以下是使用ActivityResultContract API的示例代码:

代码语言:txt
复制
// 定义一个合同
class MyContract : ActivityResultContract<Uri, Boolean>() {
    override fun createIntent(context: Context, input: Uri): Intent {
        // 创建启动目标Activity的Intent
        val intent = Intent(context, TargetActivity::class.java)
        intent.data = input
        return intent
    }

    override fun parseResult(resultCode: Int, intent: Intent?): Boolean {
        // 处理返回结果
        return resultCode == Activity.RESULT_OK
    }
}

// 在Activity中使用合同
class MyActivity : AppCompatActivity() {
    private val launcher = registerForActivityResult(MyContract()) { result ->
        // 处理返回结果
        if (result) {
            // 成功处理结果
        } else {
            // 处理失败
        }
    }

    private fun startTargetActivity() {
        val input = Uri.parse("example://data")
        launcher.launch(input)
    }
}

在上述示例中,我们定义了一个自定义的合同(MyContract),它指定了输入类型为Uri,输出类型为Boolean。在createIntent()方法中,我们创建了启动目标Activity的Intent,并将输入数据传递给它。在parseResult()方法中,我们根据返回的结果代码和Intent来处理返回结果。

在MyActivity中,我们使用registerForActivityResult()方法注册了合同,并在回调中处理返回结果。在startTargetActivity()方法中,我们使用launcher.launch()方法启动目标Activity,并传递输入数据。

总结一下,androidx中已弃用的OnActivityResult()方法被推荐使用ActivityResultContract API来处理Activity之间的结果传递。ActivityResultContract API提供了一种更简洁、类型安全的方式来处理ActivityResult,并且可以更好地与Jetpack组件集成。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

(译)openURL 在 iOS10

而与之相关方法 canOpenURL: 在iOS 9隐私控制里也禁止查询设备安装App。...苹果在iOS 10 已经用了openURL:这个旧方法,openURL:options:completionHandler:来代替。...(Haley_Wong注:canOpenURL:是在iOS 3添加;打开外部链接一般都是用来调起别的App,比如调起打电话、邮件、QQ、微信、支付宝等) iOS 10 更新 苹果在UIKit相关...翻译如下: 新UIApplication 方法`openURL:options:completionHandler:` 会异步执行,并在主队列调用这个指定 `completion handler`...这个方法有一个要打开URL 参数,并且返回一个表示成功或者失败布尔值: // Objective-C - (BOOL)openURL:(NSURL*)url // Swift open func

2.5K10

使用Pluto 检测 Kubernetes API

前言 Kubernetes版本不断迭代,Kubernetes API 也一直在变化。随着这些更改出现,API 某些部分被并最终被删除。...我们如何发现已和即将删除API版本资源呢?该问题一个答案是查看官方文档,并检查在即将到来Kubernetes更新中将删除API资源版本。...Kubernetes API原因 Kubernetes指定了一个策略,它定义了如果API某些部分被用意味着什么?...https://fairwinds.com/insights-signup/pluto 说明:我们目录中有两个文件 apiVersions。这需要在 1.16 升级之前修复。...该版本在 1.16 如果您想查看单个命名空间信息,可以传递 --namespace 或 -n 标志来限制输出。

18930

Kubernetes 1.26 删除、和主要更改

API 已被标记为在未来 Kubernetes 版本删除;它将继续运行直到被删除(从起至少一年),但使用会导致显示警告。...删除 API 在当前版本不再可用,此时您必须迁移到使用替换 API。 一般可用 (GA) 或稳定 API 版本可能会标记为,但不得在 Kubernetes 主要版本删除。...Kubernetes v1.26 和删除 除上述内容外,Kubernetes v1.26 目标是包括一些额外删除和。...作为其中一部分,Kubernetes v1.26 将删除 OpenStack (cinder卷类型)树内存储集成。.../github.com/kubernetes/enhancements/issues/1489 删除 GlusterFS in-tree 驱动程序 树内 GlusterFS 驱动程序 在 v1.25

1.7K30

学习Android时发现别人方法已被怎么办

问题描述 在学习Android时我们肯定要敲别人代码,而过去时间写代码在高API版本很容易遇到已被启动情况,下面就是这种情况例子: ? 但是我们如何才能找到这个方法更新版本呢?...首先我们打开GoogleAndroid官方网站:Android Developers,如下所示: ? 然后在搜索栏搜索。...但是注意我们不要直接搜索方法名,就如此例:getDrawable()方法,因为并不会提供任何结果,而是应当搜索此方法所属类,而类我们通过Android Studio就可以查询到了: ?...在跳出页面再点击红色区域: ? 如下: ?...我们发现现在此方法需要输入Theme,但是可以选择输入nulll,我们就简单一点,修改原来方法,多输入一个参数null,如下: ? 可以看到现在所示方法就不在提示方法被用了。

1.8K10

Thread类方法

Thread 类除了有一些有用方法之外,还有一些危险方法,开发者不应该使用。这些方法是 Java 线程 API 原来提供,但很快就发现不适合开发者使用。...可惜是,因为 Java 要向后兼容,所以不能把这些方法从 API 移除。开发者要知道有这些方法,而且在任何情况下都不能使用。...stop() 如若不违背并发安全要求,几乎不可能正确使用 Thread.stop(),因为 stop() 方法会立即“杀死”线程,不会给线程任何机会把对象恢复成合法状态。...其实,这种机制会导致死锁之间条件竞争,而且 resume() 会导致这几个方法不能使用。 destroy() 这个方法一直没有实现,如果实现了,会遇到与 suspend() 方法一样条件竞争。...开发者始终应该避免使用这些方法。为了达到上述方法预期作用,Java 开发了一 些安全替代模式。前面提到“关闭前一直运行”模式就是这些模式一例。

66010

startActivityForResult被标记为用后,如何优雅启动Activity?

大家好,又见面了,我是你们朋友全栈君。 文章目录 一、如何解决 startActivityForResult 被? 二、ActivityResultContract 该如何使用?...一、如何解决 startActivityForResult 被?...可以明显看到,在androidx.activity1.2.0-alpha04时开始,Android这位你调用过无数次startActivityForResult和onActivityResult,...原因也许是onActivityResult里需要处理各种判断、嵌套,也许是既要处理requestCode也要处理resultCode这种高耦合难以维护Id判断模式。...但其原因已不重要了,因为既然Android里已提供了更好方案并把startActivityForResult标记为了,那么我们就应该开始了解一下位于 ComponentActivity 或 Fragment

1.7K20

Twitter野心:我们终将密码

这个过程也很简单:用户在应用程序登录页面输入自己手机号码,然后twitter某一次性代码给这个手机号码发个验证码。你一旦进入正确验证码,就可以像往常一样打开twitter应用程序了。...在不久将来,Twitter用户就可以Digits登录Apps了,登录过程有三个步骤: 1、在移动设备登录页面有一个注册选项,页面上输入你电话号码; 2、接着Twitter会发送一条短信,你输入其中验证码...为什么作出这种密码、登陆APP选择呢?思考缘由,是因为考虑到发展中国家电子邮件并不常用。同时开发这一功能还有一个好处就是解决了人们要记住多个web网站密码痛苦。...FreeBuf观点 在数据库泄露频发今天,不知国内厂商是否有过类似想法,或正在潜心研究替代密码新技术呢?如果密码并找到了可以替代密码新技术,那绝对是一项伟大革新!...在之前文章我们已经介绍过虹膜扫描生物验证方法,也介绍过一个特定URL取代密码技巧。 事实也证明,取代密码,人们一直在努力!

1.1K50

Table被web编程原因

Table要比其它html标记占更多字节。 (延迟下载时间,占用服务器更多流量资源。) Tablle会阻挡浏览器渲染引擎渲染顺序。 (会延迟页面的生成速度,让用户等待更久时间。)...Table里显示图片时需要你把单个、有逻辑性图片切成多个图。 (增加设计复杂度,增加页面加载时间,增加HTTP会话数。) 在某些浏览器Table里文字拷贝会出现问题。...Table会影响其内部某些布局属性生效(比如里元素height:100%) (这会限制你页面设计自由性。) 一旦学了CSS知识,你会发现使用table做页面布局会变得更麻烦。...(先花时间学一些CSS知识,会省去你以后大量时间。) table对对于页面布局来说,从语义上看是不正确。 (它描述是表现,而不是内容。) table代码会让阅读者抓狂。...Tables好处 在某些场合,使用Table是100%适合、恰当和正确。比如,table做表格是完全正确。 如果你无法判断是否应该使用table,参考一下上面的几条,相信你能找到答案。

95070

javaonresume_java – onActivityResult()之前调用onResume()?

大家好,又见面了,我是你们朋友全栈君。...这里是我应用程序布局: > onResume()提示用户登录 >如果用户登录,他可以继续使用该应用程序 3.如果用户在任何时候退出,我想再次提示登录 我该如何实现呢?...System.out.println(e); } catch (NullPointerException e) { System.out.println(e); } } } 用户成功登录后: protected void onActivityResult...,Toast.LENGTH_SHORT).show(); } } 问题是,onResume()在onActivityResult()之前被调用,所以当用户成功登录时,我主活动不会得到通知,因为首先调用...在哪里是提示登录最佳地点? 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144082.html原文链接:https://javaforall.cn

24610

微软将在WindowsVBScript,组态软件大军VBS脚本该何去何从?

JZGKCHINA 工控技术分享平台 微软宣布 VBScript并计划在未来 Windows 版本逐步淘汰该脚本语言。“VBScript 在从操作系统移除之前,将作为按需功能提供。”...VBScript可以看作是 VB 语言简化版,它具有VB语言容易学习特性。...VBS天生集成到 Windows 环境,并通过VBS脚本与主机应用和组件程序通信。 尽管微软官方并未对此做出任何解释。 笔者猜测 VBScript 部分原因可能是出于安全考虑。...可能现在还在工控组态软件领域存活就只剩下VBA这一支血脉了,相信不久将来随着office内嵌python流行,VBA也会完成它使命而退出舞台,而那个时候相信更多组态软件以VBA为脚本家族也已经改到其他编程语言引擎轨道上来了...,比如IFIXVBA脚本,FacrotyTalk ViewSEVBA脚本,Citect悉亚特VBA脚本等等吧。。。。

33160
领券