1.MainActivity

package com.lion.activityintentex

import android.content.Intent
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.lion.activityintentex.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    private lateinit var activityMainBinding: ActivityMainBinding

    private lateinit var firstActivityLauncher: ActivityResultLauncher<Intent>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        firstActivityLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
            activityMainBinding.textView4.text = "FirstActivity 실행 후 돌아왔습니다"

            when(it.resultCode){
                RESULT_OK -> {
                    activityMainBinding.textView4.text = "value1 : ${it.data?.getIntExtra("value1", 0)}"
                }
                RESULT_CANCELED ->{
                    activityMainBinding.textView4.text = "취소되었습니다"
                }
            }
        }

        activityMainBinding.apply {
            button.setOnClickListener {
                // 런처를 통해 Activity를 실행한다.
                val firstIntent = Intent(this@MainActivity, FirstActivity::class.java)
                firstIntent.putExtra("value1",111)
                firstActivityLauncher.launch(firstIntent)
            }

        }
    }
}

 

2. FirstActivity

import android.content.Intent
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.lion.activityintentex.databinding.ActivityFirstBinding

class FirstActivity : AppCompatActivity() {
    lateinit var activityFirstBinding: ActivityFirstBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        activityFirstBinding = ActivityFirstBinding.inflate(layoutInflater)
        setContentView(activityFirstBinding.root)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

        activityFirstBinding.apply {
            textView.text = "value1 : ${intent.getIntExtra("value1",0)}"

            button4.setOnClickListener {
                val finishIntent = Intent()
                finishIntent.putExtra("value1",777)
                setResult(RESULT_OK,finishIntent)
                finish()
            }
        }
    }
}