美文网首页
Android:startActivityForResult替换

Android:startActivityForResult替换

作者: 因为我的心 | 来源:发表于2022-12-05 10:26 被阅读0次

    1、startActivityForResult 替代方案:

    startActivityForResult() 方法用于返回数据给上一个 Activity。
    但这个方法已经被废弃了很久,现在 Google 使用 registerForActivityResult() 方法来实现此功能。

    2、registerForActivityResult() 实现

    使用 registerForActivityResult() 写法,实现 SecondActivity 返回数据给 FirstActivity。

    1、FirstActivity

    class FirstActivity : AppCompatActivity() {
        //请求返回的封装
        private val requestDataLauncher =
            registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
                //返回接受的数据
                if (result.resultCode == RESULT_OK) {
                    val data = result.data?.getStringExtra("data")
                    Log.d("LUO", "data =${data}")
                }
            }
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_first)
            var  btnNext = findViewById<Button>(R.id.btn_next)
    
            //传递的数据
            btnNext.setOnClickListener {
                val intent = Intent(this, SecondActivity::class.java)
                intent.putExtra("name","FirstActivity:小明")
                requestDataLauncher.launch(intent) //调用 launch 方法,该方法接收 输入类型 I
            }
        }
    }
    

    2、SecondActivity

    class SecondActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_second)
            var  btnNext = findViewById<Button>(R.id.btn_next)
            //intent 必须为getIntent(),自己new Intent()获取值为null
            var name = intent.getStringExtra("name")
            Log.d("LUO", "name =${name}")
    
            //返回的数据
            btnNext.setOnClickListener {
               val intent = Intent()
                intent.putExtra("data","SecondActivity 返回数据")
                setResult(RESULT_OK,intent)
                finish()
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Android:startActivityForResult替换

          本文链接:https://www.haomeiwen.com/subject/ebqvfdtx.html