赞
踩
在新版androidX里面,startActivityForResult()被标注弃用,推荐使用registerForActivityResult()方法
使用registerForActivityResult()方法
但是注意了:
1、registerForActivityResult只能在onCreate()中初始化注册。onstart()之后就不能注册了。
2、registerForActivityResult()方法不要放在setOnClickListener()里面,要放在onCreate里。
使用如图
- private ActivityResultLauncher launcher;
-
- public void initActivityResult() {
-
- launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
- @Override
- public void onActivityResult(ActivityResult result) {
- if (result.getResultCode() == RESULT_OK) {
- Logger.d("onActivityResult: data = " + result.getData());
- }
- }
- });
- }
-
-
-
-
- //跳转调用
- Intent intent = new Intent(this, BaiduASRDigitalDialog.class);
-
- // running = true;
- launcher.launch(intent);
两个参数:
第一个是 ActivityResultContract
第二个是 ActivityResultCallback
返回值:
它返回一个 ActivityResultLauncher 对象
用法:调用 ActivityResultLauncher的 launch方法可以跳转到另一个Activity或者发起权限请求
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。