美文网首页
跳转传值

跳转传值

作者: jancywen | 来源:发表于2023-07-11 13:53 被阅读0次

    使用 Intent启动Activity 、启动Service 以及发送广播等场景

    显式 Intent

      val intent = Intent(this, SecondActivity::class.java) 
      startActivity(intent)
    

    隐式 Intent

    Intent指定 actioncategory由系统去分析找出合适的Activity去启动
    只有<action>和<category>中的内容同时匹配Intent 中指定的action和category时,这个Activity 才能响应该Intent 。

      val intent = Intent("com.example.activitytest.ACTION_START")
      intent.addCategory("com.example.activitytest.MY_CATEGORY") 
      startActivity(intent)
    

    传值

    传值:intent.putExtra("extra_data", data)
    取值:val extraData = intent.getStringExtra("extra_data")

    反向传值

    1.用startActivityForResult()方法来启动SecondActivitystartActivityForResult()方法接收两个参数:第一个参数还是Intent ;第二个参数是请求码,用于在之后的回调中判断数据的来源。

    val intent = Intent(this, SecondActivity::class.java) 
    startActivityForResult(intent, 1)
    

    2.在SecondActivity 构建了一个Intent 用于传递数据。把要传递的数据存放在Intent中,然后调用了setResult()方法。这个方法专门用于向上一个Activity返回数据。setResult()方法接收两个参数:第一个参数用于向上一个Activity 返回处理结果,一般只使用RESULT_OKRESULT_CANCELED这两个值;第二个参数则把带有数据的Intent 传递回去。最后调用了finish()方法来销毁当前Activity

    val intent = Intent() 
    intent.putExtra("data_return", "Hello FirstActivity") 
    setResult(RESULT_OK, intent) 
    finish()
    
    1. FirstActivity 中重写onActivityResult()来得到返回的数据
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
       super.onActivityResult(requestCode, resultCode, data) 
       when (requestCode) { 
        1 -> if (resultCode == RESULT_OK) { 
        val returnedData = data?.getStringExtra("data_return") 
        Log.d("FirstActivity", "returned data is $returnedData") 
      } 
     } 
    }
    

    相关文章

      网友评论

          本文标题:跳转传值

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