intent1.xml 과 intent2.xml 모두 버튼 하나 밖에 없으므로

따로 xml코드는 적지 않겠음.

class Intent1 : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intent1)

        var button1: Button = findViewById(R.id.change_activity) //뷰바인딩을 이용해도됩니다.

				//intent만들기
         var intent = Intent(this@Intent1, Intent2::class.java)
      
				//버튼을 클릭 했을 때 intent에게 정보가 전달되도록 합니다.
        button1.setOnClickListener(View.OnClickListener {
				  //key,value방식
	        //값을 포함해서 전달하는 방법1 - 전달만 하는 intent
            intent.putExtra("number1",1)
            intent.putExtra("number2",2)
            startActivity(intent)

            //값을 포함해서 전달하는 방법2 - 전달만 하는 intent
            //apply를 이용하면 intent에 담기는 정보가 {} 안에 있기 때문에 한눈에 알아보기 쉽다.
            intent2.apply {
                this.putExtra("number1", 1)
                this.putExtra("number2", 2)
            }
            startActivity(intent)
        })

    }

}
class Intent2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intent2)

        //값을 가져오는 방법
        

        val resultButton: Button = findViewById(R.id.result) //뷰바인딩 이용해도 됩니다.

				//버튼을 눌렀을 때 결과 값을 받습니다.
        //가져올때는 변수타입이 지정된 함수이름을 써야합니다.
        //키값이 없을 때를 대비하여 default값도 지정해줘야함
						resultButton.setOnClickListener(View.OnClickListener {
            //보내진 결과 값 받기
            var number1 = intent.getIntExtra("number1", 0)
            var number2 = intent.getIntExtra("number2", 0)

            Log.d("getExtra", "" + number1)
            Log.d("getExtra", "" + number2)
         
        })

    }
}
		app수준 gradle에서 
		implementation "androidx.activity:activity:1.3.0-rc01"
    implementation "androidx.fragment:fragment:1.4.0-alpha04"
		를 import해줍니다. 최신버전은 알아서 찾으세요.

class Intent1 : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intent1)

        var button1: Button = findViewById(R.id.change_activity) //뷰바인딩을 사용해도 됩니다.

        //요청을 하는 intent - starActivityForResult deprecated
        //requestCode는 이제 사용하지 x
        //명시적 intent - 누구에게 뭘 해줘 라고 명시적으로 명령
				//intent1이 intent2에게 명시적으로 명령

        val intent = Intent(this@Intent1, Intent2::class.java)

        // launcher 선언 - 솔직히 뭔지 잘 모르겠읍니다.

        val launcher: ActivityResultLauncher<Intent> = registerForActivityResult(
            StartActivityForResult()
        ) { result: ActivityResult ->
            if (result.resultCode == RESULT_OK) {
                val data = result.data
                // RESULT_OK일 때 실행할 코드
                val mString = result.data?.getIntExtra("result", 100)
                Log.d("number", "받아온 결과값" + mString)
								//intent2에서 result에 3을 넣어서 반환했기 때문에
								//mstring에 3이 들어있을 거임.
            }
        }

        button1.setOnClickListener(View.OnClickListener {

            // launcher를 이용해서 화면 시작하기
            //intent에 담고싶은 정보를 넣어준다.
            //apply를 이용하면 intent에 담기는 정보가 {} 안에 있기 때문에 한눈에 알아보기 쉽다.
            intent2.apply {
                this.putExtra("number1", 1)
                this.putExtra("number2", 2)
            }
            launcher.launch(intent)
        })

    }

}

class Intent2 : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intent2)

        val resultButton: Button = findViewById(R.id.result)

				//값을 가져오는 방법
        //가져올때는 변수타입이 지정된 함수이름을 써줘야한다. ex)getIntExtra, getStringExtra
        //키값이 없을 때를 대비하여 default값도 지정해줘야함
        resultButton.setOnClickListener(View.OnClickListener {
            //보내진 결과 값 받기
            var number1 = intent.getIntExtra("number1", 0)
            var number2 = intent.getIntExtra("number2", 0)

            Log.d("getExtra", "" + number1)
            Log.d("getExtra", "" + number2)
            //처리해서 다시 인텐트에게 정보? 주기
            val result = number1 + number2

            val resultIntent = Intent()
            resultIntent.putExtra("result", result)

            setResult(Activity.RESULT_OK, resultIntent)
            finish() //액티비티 종료 - activity가 stack처럼 쌓이기때문에 finish하면 intent1만 남음
        })

    }
}
class Intent1 : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_intent1)

        var button1: Button = findViewById(R.id.change_activity) //뷰바인딩을 사용해도 됩니다.

        // 암시적 intent - ex) url를 보여줘라 라는 인텐트
        // 할 수 있는 대상에게 암시적으로 요청 (브라우저가 여러개 있으면 브라우저 종류가 나오고, 사용자가 고른다.
				// 공유하기를 눌렀을 때 카톡,인스타,페북 으로 공유하기 등이 나오는 것을 떠올리면 됨.
        // 그렇기 때문에 명령대상이 명확한게 아니라 할 수 있는 대상에게 모두 보내는 것이므로 대상이 암시적임)
        val intent3 = Intent(Intent.ACTION_VIEW, Uri.parse("<http://m.naver.com>"))

      
        button1.setOnClickListener(View.OnClickListener {

            startActivity(intent3)
        })

    }