首先第一步,我们对 Launcher 对象做一个封装, 把 ActivityResultCallback 回调方法在 launch 方法中调用。 /** *对Result-Api的封装,支持各种输入与输出,使用泛型定义 */ @SuppressWarnings("unused") public class BaseResultLauncher<I, O> { private final androidx.activity.result.ActivityResultLauncher<I> ...
上节《【Jetpack】学穿:Activity Results API》说过,在重构公司项目的BaseFragment时,遇到onRequestPermissionResultDeprecated的问题,顺带系统地学了一波Activity Results API相关的姿势。 项目中,把申请权限相关的操作都塞到BaseActivity/BaseFragment中,可以,但不太优雅,很多子类Activity/Fragment被迫继承了这个用不到的功能。
接下来我们就来探讨如何在不封装BaseActvity的情况下只调用一个带回调的函数实现startActivityForResult/onActivityResult。 2 解决思路 非Activity Results API方案 其实早在Activity Results API问世前,我们项目中就有使用一个空视图GhostFragment作为中转回调的方案来实现。 大概的思路如下: Activty/Fragment——>add Gho...
*/Toast.makeText(this@ForResultActivity,"result:${it}",Toast.LENGTH_SHORT).show()}.launch(Manifest.permission.ACCESS_FINE_LOCATION) 是不是一下子简洁了很多,有木有,哈哈 正文 TKPermission是基于AndroidX Activity Result API封装的权限类库,摆脱了旧的繁琐的权限申请方式,让权限申请变得无比简单轻松 功能...
首先,SecondActivity中的代码是不需要修改的。这部分代码并没有被废弃,Activity Result API也与它无关。 FirstActivity中的代码,我们需要使用Activity Result API来替代startActivityForResult()的写法,如下所示: 代码语言:javascript 复制 classFirstActivity:AppCompatActivity(){privateval requestDataLauncher=registerFor...
所以这次来讲些简单一点的封装,来封装 Jetpack 的另一个组件——Activity Result API。这是官方用于替代 startActivityForResult() 和 onActivityResult() 的工具,能替代但是不够好用,有些小伙伴看了后还是选择写 startActivityForResult()。需要封装优化一下用法,但是推出大...
在以前我们一直用的是ActivityCompat.requestPermissions()去申请权限和重写onRequestPermissionsResult()回调方法,对授权结果进行判断,执行后续操作。 但是目前这个方法已经过时了,在网上找了一圈,大部分都是老方法,于是就决定自己重写一套权限框架。 项目地址:https://github.com/Peakmain/BasicLibrary ...
③ ActivityResultCallback → 结果回调 第二个入参,见名知意:启动Activity并返回当前Activity时的 结果回调。 就定义了一个回调方法,Activity Result API 又是 模版方法模式 封装的思想体现,开发仔按需注入 协定类型 和 结果回调 即可,无需关注底层细节。巴适得很!
现在更加建议使用Activity Result API来实现在两个Activity之间交换数据的功能。 2. 传统写法 - 在两个Activity之间交换数据 如果想要在两个Activity之间交换数据,我们先回顾一下传统的写法: classFirstActivity:AppCompatActivity() {overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState) ...
对 Activity Result API 的封装主要集中在简化创建方式和实现自动/按需注册。首先,通过封装简化了创建 Launcher 对象的过程,将回调方法整合到 launch 方法中,并提供了简化对象创建的方式。其次,实现了自动注册或按需注册的功能,包括定义基类以简化创建逻辑、使用懒加载方法以及通过 Kotlin 委托实现按需添加...