android registerforactivityresult resultcode
在Android中,使用`registerForActivityResult`方法可以实现带回调的启动Activity,并返回结果码。以下是其基本使用方法:
1. 添加引用:在项目的 Gradle 文件中添加对`androidx.appcompat:appcompat:1.3.1`的引用,确保使用的版本在1.3.0以上。
2. 基本使用:
```java
val launcher = registerForActivityResult(
object : ActivityResultContract<String, String>() {
override fun createIntent(context: Context, input: String?): Intent {
//创建启动页面所需的Intent 对象,传入需要传递的参数
return Intent(this@MainActivity, SecondActivity::class.java).apply {
putExtra("key", input)
}
}
override fun parseResult(resultCode: Int, intent: Intent?): String {
//页面回传的数据解析,相当于原`onActivityResult`方法
val data = intent?.getStringExtra("result") ?: ""
return if (resultCode == RESULT_OK) data else ""
}
},
ActivityResultCallBack<String>()
)
launcher.launch("传递给第二个页面的数据:你好吗?")
```
安卓intent用法通过`registerForActivityResult`方法返回的`launcher`对象,可以在Activity的`onCreate`方法中创建,然后通过调用`launcher.launch`方法来启动Activity,并传递参数。
`ActivityResultContract`是一个抽象类,内部有两个抽象方法:`createIntent`和`parseResult`。在`createIntent`方法中,可以创建需要启动的页面Intent 对象,同时也可以传参;在`parseResult`方法中,可以对页面回传的数据进行解析,并返回解析后的数据。
`ActivityResultCallBack`也是一个抽象类,内部只有一个抽象方法`onActivityResult`,用于接收`parseResult`解析的数据,并进行相应的处理。
此外,官方还提供了一些实现类,例如`StartActivityForResult`、`RequestMultiplePermissi
ons`、`RequestPermission`等,可以直接拿来使用,以满足常见的业务需求
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论