首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏program

    再见 onActivityResult!你好 Activity Results API

    /** * {@inheritDoc} * * @deprecated use * {@link #registerForActivityResult(ActivityResultContract private val myActivityLauncher = registerForActivityResult(MyResultContract()) { result -> Log.e ("yhj", result) } result就是从上个界面传递回来的数据,,registerForActivityResult方法的返回值是ActivityResultLauncher。 private val captureLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { 非Activity/Fragment中接收数据 在Activity和Fragment中,我们能直接使用registerForActivityResult方法 ,那是因为ConponentActivity

    1.8K30编辑于 2022-06-29
  • 来自专栏全栈程序员必看

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

    { super.onCreate(savedInstanceState) resultLauncher = registerForActivityResult( 而使用registerForActivityResult()可以多次调用以注册多个 ActivityResultLauncher 实例,用来处理不同的Activity结果,让代码更便于维护。 同时,引用一个官方文档的警告 ↓ 注意:虽然在 fragment 或 activity 创建完毕之前可安全地调用 registerForActivityResult(),但在 fragment 或 activity ,必须在STARTED前调用registerForActivityResult。 看来我们必须每次都必须通过registerForActivityResult预定一个ActivityResultLauncher,在需要的时候再去launch,这…似乎还是比较麻烦。

    4.8K20编辑于 2022-09-14
  • 来自专栏全栈程序员必看

    Activity Result API详解,是时候放弃startActivityForResult了「建议收藏」

    ()的写法,如下所示: class FirstActivity : AppCompatActivity() { private val requestDataLauncher = registerForActivityResult 我们完全移除了对onActivityResult()方法的重写,而是调用registerForActivityResult()方法来注册一个对Activity结果的监听。 registerForActivityResult()方法接收两个参数,第一个参数是一种Contract类型,由于我们是希望从另外一个Activity中请求数据,因此这里使用了StartActivityForResult registerForActivityResult()方法的返回值是一个ActivityResultLauncher对象,这个对象当中有一个launch()方法可以用于去启用Intent。 实现代码如下: class FirstActivity : AppCompatActivity() { private val takePictureLauncher = registerForActivityResult

    1.5K30编辑于 2022-09-14
  • 来自专栏程序亦非猿

    再见!onActivityResult!你好,Activity Results API!

    /** * {@inheritDoc} * * @deprecated use * {@link #registerForActivityResult(ActivityResultContract 注册协议,获取启动器-ActivityResultLauncher 注册协议,使用registerForActivityResult方法,该方法由ComponentActivity或者Fragment提供 代码如下: private val myActivityLauncher = registerForActivityResult(MyActivityResultContract()){result - result,Toast.LENGTH_SHORT).show() textView.text = "回传数据:$result" } 如上代码,注册了MyActivityResultContract,registerForActivityResult ) else toast("Permission is denied") } // 请求一组权限 private val requestMultiplePermissions = registerForActivityResult

    2K40发布于 2020-11-10
  • 来自专栏全栈程序员必看

    Android开发之startActivityForResult过时的替代方案

    如上图所示: 在api29中提示已过时,官方给出的替代方案是上面第二个红框的方法registerForActivityResult 该怎么用呢 ? 先看kotlin版本的写法: private val startActivity = registerForActivityResult(ActivityResultContracts.StartActivityForResult , newWordActivityRequestCode) ActivityResultLauncher<Intent> intentActivityResultLauncher = registerForActivityResult

    4.5K20编辑于 2022-09-14
  • 来自专栏郭霖

    Activity Result API详解,是时候放弃startActivityForResult了

    我们完全移除了对onActivityResult()方法的重写,而是调用registerForActivityResult()方法来注册一个对Activity结果的监听。 registerForActivityResult()方法接收两个参数,第一个参数是一种Contract类型,由于我们是希望从另外一个Activity中请求数据,因此这里使用了StartActivityForResult registerForActivityResult()方法的返回值是一个ActivityResultLauncher对象,这个对象当中有一个launch()方法可以用于去启用Intent。 它将会出奇得简单: class FirstActivity : AppCompatActivity() { private val requestPermissionLauncher = registerForActivityResult 实现代码如下: class FirstActivity : AppCompatActivity() { private val takePictureLauncher = registerForActivityResult

    2.2K30发布于 2021-11-03
  • 来自专栏微卡智享

    Android OpenCV(四十):QR二维码检测与识别

    mPhotoOpBinding: LayoutPhotoOpBinding // 请求相机权限 private val requestCameraPermission = registerForActivityResult .show() } } // 请求外部存储权限 private val requestStoragePermission = registerForActivityResult applicationContext, "拍照失败", Toast.LENGTH_SHORT).show() } } private val pickImage = registerForActivityResult Toast.makeText(applicationContext, "读取图片失败", Toast.LENGTH_SHORT).show() return@registerForActivityResult Toast.makeText(applicationContext, "读取图片失败", Toast.LENGTH_SHORT).show() return@registerForActivityResult

    3.6K30发布于 2021-07-07
  • 来自专栏进击的多媒体开发

    再见!onActivityResult!你好,Activity Results API!

    /** * {@inheritDoc} * * @deprecated use * {@link #registerForActivityResult(ActivityResultContract 注册协议,获取启动器-ActivityResultLauncher 注册协议,使用registerForActivityResult方法,该方法由ComponentActivity或者Fragment提供 代码如下: private val myActivityLauncher = registerForActivityResult(MyActivityResultContract()){result - result,Toast.LENGTH_SHORT).show() textView.text = "回传数据:$result" } 如上代码,注册了MyActivityResultContract,registerForActivityResult ) else toast("Permission is denied") } // 请求一组权限 private val requestMultiplePermissions = registerForActivityResult

    2.1K20发布于 2020-11-10
  • 来自专栏BennuCTech

    Jetpack:使用 ActivityResult 处理 Activity 之间的数据通信

    androidx.fragment:fragment:$fragment_version” } 然后先看看最简单的使用方式,比如打开系统文件管理器选择一个图片,代码如下: val getContent = registerForActivityResult -> // 处理返回的 Uri } getContent.launch("image/*") //过滤图片 这里涉及几个重要的类和函数: (1)registerForActivityResult public final <I, O> ActivityResultLauncher registerForActivityResult( @NonNull ActivityResultContract 先看registerForActivityResult源码: @NonNull @Override public final <I, O> ActivityResultLauncher registerForActivityResult( @NonNull final ActivityResultContract<I, O> contract,

    1.6K30编辑于 2021-12-10
  • 来自专栏Android 开发者

    使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

    val getContent = registerForActivityResult(GetContent()) { uri: Uri? 您可以设置一个 mime 类型的过滤器对所选文件进行过滤,GetContent.launch() 接收一个字符串作为参数: val getContent = registerForActivityResult

    52610编辑于 2022-03-09
  • 来自专栏进击的多媒体开发

    【Jetpack更新之Fragment】1.3.0-alpha04 来袭,Fragment 间通信的新姿势

    startActivityForResult()/onActivityResult() 和 requestPermissions()/onRequestPermissionsResult() 弃用 prepareCall() 重命名为 registerForActivityResult 文章介绍的很详尽,这里不再赘述 prepareCall 重命名 值得注意的地方是 prepareCall() 被命名为 registerForActivityResult() ❝注意:在版本处于 Alpha

    1.5K20发布于 2020-05-26
  • 来自专栏振兴的Android修炼手册

    AndroidQ兼容性适配指南

    /** * 通过MediaStore查询文件 */ private fun queryFileByMediaStore() { queryPictureForActivityResult = registerForActivityResult * * 根据查询到的uri,获取bitmap */ private fun readFileByMediaStore() { readPictureForActivityResult = registerForActivityResult = registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { TAG, "deleteFileByMediaStore: 授权失败") } } deletePictureSenderRequestActivityResult = registerForActivityResult private fun createFile(mimeType: String, fileName: String) { createFileActivityResult = registerForActivityResult

    8.2K30编辑于 2022-12-27
  • 来自专栏Bennyhuo

    使用 Jetpack ActivityResult 处理 Activity 之间的数据通信

    val getContent = registerForActivityResult(GetContent()) { uri: Uri? 您可以设置一个 mime 类型的过滤器对所选文件进行过滤,GetContent.launch() 接收一个字符串作为参数: val getContent = registerForActivityResult

    1.1K30发布于 2021-04-26
  • 来自专栏Android、鸿蒙开发

    Android 12 蓝牙适配

    Toast.LENGTH_SHORT).show() } ① 打开蓝牙意图 在MainActivity中新增如下代码: //打开蓝牙意图 val enableBluetooth = registerForActivityResult (if (isOpenBluetooth()) "蓝牙已打开" else "蓝牙未打开") } } 此方法就替代了之前startActivityForResult,现在我们使用registerForActivityResult ② 请求BLUETOOTH_CONNECT权限意图 registerForActivityResult不光能用于页面获取值,也能用于请求权限。 //请求BLUETOOTH_CONNECT权限意图 val requestBluetoothConnect = registerForActivityResult(ActivityResultContracts.RequestPermission ,首先我们需要在MainActivity中创建扫描意图: //请求BLUETOOTH_SCAN权限意图 private val requestBluetoothScan = registerForActivityResult

    2.7K51编辑于 2022-04-27
  • 来自专栏用户8928967的专栏

    《Android编程权威指南》之第二个activity

    object-declarations.html 从子activity获取返回结果 GeoQuiz应用内部的交互时序图 这里 startActivityForResult 已经被弃用了,当前 google 推荐registerForActivityResult MainActivity.kt 中: class MainActivity : AppCompatActivity() { ··· private val startForResult = registerForActivityResult

    86720发布于 2021-09-22
  • 来自专栏Android、鸿蒙开发

    Android 12 蓝牙适配 Java版

    enableBluetooth; //打开蓝牙意图 private void registerIntent() { //打开蓝牙意图 enableBluetooth = registerForActivityResult ); } }); }   这里声明了一个变量,然后在方法中对变量进行赋值,此方法就替代了之前的startActivityForResult,现在我们使用registerForActivityResult 在返回中可以得知当前是否打开了蓝牙,因为是在Java中使用,因此我们写了一个registerIntent()方法,我们需要在onCreate之前调用这个方法,如图所示: ② 请求BLUETOOTH_CONNECT权限意图 registerForActivityResult 请求蓝牙连接权限意图 然后在registerIntent()方法中,增加如下代码: //请求BLUETOOTH_CONNECT权限意图 requestBluetoothConnect = registerForActivityResult 请求蓝牙扫描权限意图 然后在registerIntent()方法中进行赋值,代码如下所示: //请求BLUETOOTH_SCAN权限意图 requestBluetoothScan = registerForActivityResult

    3.3K40编辑于 2023-01-07
  • 来自专栏该溜子的专栏

    【Android】Activity 如何进行数据传输

    R.id.btn_second5) { activityResultLancher.launch(new Intent(this, SecondActivity.class)); } 2:registerForActivityResult startActivityForResult + onActivityResult 机制的平替 private ActivityResultLauncher<Intent> activityResultLancher = registerForActivityResult

    18510编辑于 2025-08-21
  • 来自专栏老欧说安卓

    Android开发笔记(一百八十)使用Glide加载特殊图像

    视频挑选与封面加载代码示例如下: // 注册一个善后工作的活动结果启动器,获取指定类型的内容 ActivityResultLauncher launcher = registerForActivityResult

    1.9K10编辑于 2022-03-09
  • 来自专栏Android、鸿蒙开发

    Android MVVM框架搭建(十)Hilt、ViewBinding、Activity Result API

    private void register() { intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult takePictureActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.TakePicture openAlbumActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.OpenDocument( permissionActivityResultLauncher; 然后在register方法中增加如下代码: //多个权限返回结果 permissionActivityResultLauncher = registerForActivityResult

    2.5K30编辑于 2022-01-19
  • 来自专栏android模块化框架搭建篇

    手把手教你搭建android模块化项目框架(九)小试牛刀——优雅的登录方案

    LoginProxyFragment } } private var block: (result: LoginResult) -> Unit = { } private val launcher = registerForActivityResult

    46351编辑于 2023-09-01
领券