Android 页面跳转:使用 registerForActivityResult 实现活动间通信
以下是一个简单的示例,演示如何使用'registerForActivityResult'在两个活动之间进行页面跳转:
在第一个活动(MainActivity)中:
// 导入需要的类
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
// 创建一个 ActivityResultLauncher 对象
private lateinit var secondActivityLauncher: ActivityResultLauncher<Intent>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 初始化 ActivityResultLauncher 对象
secondActivityLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()) { result ->
// 在此处处理第二个活动返回的结果
if (result.resultCode == RESULT_OK) {
// 处理成功
} else {
// 处理失败
}
}
// 设置按钮点击事件
findViewById<Button>(R.id.button).setOnClickListener {
// 创建一个 Intent 对象,用于启动第二个活动
val intent = Intent(this, SecondActivity::class.java)
// 启动第二个活动,并等待结果
secondActivityLauncher.launch(intent)
}
}
}
在第二个活动(SecondActivity)中:
// 导入需要的类
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
// 在此处处理第二个活动的逻辑
// 如果需要返回结果,则在返回时设置 setResult()
setResult(RESULT_OK)
// 关闭当前活动
finish()
}
}
这是一个非常简单的示例,但可以为您提供一个基本的理解,如何使用'registerForActivityResult'在两个活动之间进行页面跳转。请注意,您可以使用不同的合同来处理不同类型的结果,例如'ActivityResultContracts.TakePicture()'用于拍照结果,或'ActivityResultContracts.GetContent()'用于获取内容结果。
原文地址: https://www.cveoy.top/t/topic/nvv5 著作权归作者所有。请勿转载和采集!