本文主要是介绍startActivityForResult()方法被弃用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、现象
在新版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>() {@Overridepublic 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);
三、关于registerForActivityResult()方法
两个参数:
第一个是 ActivityResultContract
第二个是 ActivityResultCallback
返回值:
它返回一个 ActivityResultLauncher 对象
用法:调用 ActivityResultLauncher的 launch方法可以跳转到另一个Activity或者发起权限请求
这篇关于startActivityForResult()方法被弃用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!