Deperecated/Android_강의

안드로이드 - 데이터 전달하기

누알라리 2020. 2. 18. 01:49
1. Intent에 데이터 셋팅하기

- Activity를 실행하기 위해 사용하는 Intent 객체에 putExtra() 메서드를 이용하여 데이터를 세팅하면 실행되는 Activity에 서 데이터를 전달받을 수 있다.

- putExtra() 메서드는 자료형 별로 메서드가 제공되기 때문에 타입을 가리지 않는다.

 

2. Intent에서 데이터 가져오기

- Intent에 셋팅된 데이터는 getXXXExtra() 메서드를 이용해서 가져오면 된다.

- 자료형별로 메서드가 제공되므로 가져오고자 하는 데이터 타입에 맞는 메서드를 이용하여 가져온다.

 

3. 예제가 중요함 - main에서 second에 전달하고, second도 main에 전달함.
main


class MainActivity : AppCompatActivity() {

    private val SECOND_ACTIVITY = 1
    private val THIRD_ACTIVITY = 2

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

        // 1. 버튼을 눌러서 두번째 액티비티를 실행시킨다.
        button2.setOnClickListener { view ->

            // 2. 인텐트 객체 생성
            var intent = Intent(this, SecondActivity::class.java)


            // 3. Intent에 데이터 세팅.
            intent.putExtra("data1", 100)
            intent.putExtra("data2", 11.11)
            intent.putExtra("data3", true)
            intent.putExtra("data4", "문자열")

            startActivityForResult(intent, SECOND_ACTIVITY)
        }
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        // 7. 세컨드 액티비티에서 넘어온 intent에서 데이터를 뽑는다.
        if(resultCode == Activity.RESULT_OK)
        {
            var value1 = data?.getIntExtra("value1", 0)
            var value2 = data?.getDoubleExtra("value2", 0.0)
            var value3 = data?.getBooleanExtra("value3", false)
            var value4 = data?.getStringExtra("value4")

            textView.text = "data1 = ${value1}\n"
            textView.append("data2 = ${value2}\n")
            textView.append("data3 = ${value3}\n")
            textView.append("data4 = ${value4}\n")
        }
    }
}
second


class SecondActivity : AppCompatActivity() {

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

        // 4. 데이터 받아오기. 만일 올 데이터가 없으면 두 번째 매개변수인 defaultvalue가 들어간다.
        var data1 = intent.getIntExtra("data1", 0)
        var data2 = intent.getDoubleExtra("data2", 0.0)
        var data3 = intent.getBooleanExtra("data3", false)
        var data4 = intent.getStringExtra("data4")

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


        button10.setOnClickListener { view ->

            // 5. Main Activity로 전달할 때  데이터를 전달
            var intent2 = Intent()
            intent2.putExtra("value1", 200)
            intent2.putExtra("value2", 22.22)
            intent2.putExtra("value3", true)
            intent2.putExtra("value4", "문자열2")

            setResult(RESULT_OK, intent2)

            finish()
        }
    }
}