본문 바로가기
안드로이드/Activity

안드로이드 activity 데이터 전달

by 김어찐 2022. 6. 9.
728x90

intent에 데이터 셋팅하기

Activity를 실행하기 위해 사용하는 Intent 객체에 데이터를 저장할 수 있다.
putExtra 메서드를 통해 데이터 저장이 가능하며 데이터가 저장된 Intent는 실행되는 Activity까지 전달된다.
이를 통해 Intent에 저장된 데이터를 추출할 수 있다.
Intent는 Activity를 종료하고 돌아갈 때도 전달 할 수 있다.

 

intent에 데이터 가져오기

전달된 Intent 에 저장된 데이터는 getXXXExtra 메서드를 통해 추출할 수 있다.
이 메서드는 자료형 별로 이름이 다르므로 자료형에 맞는 메서드를 사용해야 한다

 

메인 액티비티

package com.example.activitydata

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    val SECOND_ACTIVITY = 0

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

        button.setOnClickListener {
            val second_intent = Intent(this,SecondActivity::class.java)
            second_intent.putExtra("data1",100)
            second_intent.putExtra("data2",10.11)
            second_intent.putExtra("data3",true)
            second_intent.putExtra("data4","문자열1")
            startActivityForResult(second_intent,SECOND_ACTIVITY)

        }
    }

    // second activity에서 데이터를 저장한 intent가 3번째 매개변수인 data에 들어오게 된다.
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        if (requestCode == SECOND_ACTIVITY) {
            if (requestCode == RESULT_OK) {
                val value1 = data?.getIntExtra("value1",0)
                val value2 = data?.getDoubleExtra("value2",0.0)
                val value3 = data?.getBooleanExtra("value3",false)
                val value4 = data?.getStringExtra("value4")

                textView.text="value1 : $value1\n"
                textView.append("value2 : $value2\n")
                textView.append("value3 : $value3\n")
                textView.append("value4 : $value4\n")
            }
        }
    }
}

 

세컨드 액티비티

package com.example.activitydata

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_second.*

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

        // 현재 액티비를 실행하기 위해 사용한 인텐트로 부터 데이터를 추출한다.
        val data1 = intent.getIntExtra("data1",0)
        val data2 = intent.getDoubleExtra("data2",0.0)
        val data3 = intent.getBooleanExtra("data3",false)
        val data4 = intent.getStringExtra("data4")

        textView2.text = "data1 : $data1\n"
        textView2.append("data2 : $data2\n")
        textView2.append("data3 : $data3\n")
        textView2.append("data4 : $data4\n")

        button2.setOnClickListener {
            val result_intent = Intent()
            result_intent.putExtra("value1",200)
            result_intent.putExtra("value2",22.22)
            result_intent.putExtra("value3",false)
            result_intent.putExtra("value4","문자열2")

            setResult(RESULT_OK,result_intent)

            finish()
        }
    }
}
728x90