Activity 를 실행하기 위해 사용하는 Intent 객체에 putExtra 메서드를 이용하여 데이터를 셋팅하면
실행되는 Activity에서 데이터를 전달 받을 수 있다.
putExtra(name,value) 메서드는 자료형 별로 메서드가 제공되기 때문에 타입을 가리지 않는다.
getXXXExtra(name,defualt) 메서드를 이용해 데이터를 가져온다. (XXX는 타입)
finish 하기 전에도 데이터 전달 가능 (to 본래 act)
-> setResult(Result_OK, intent2 객체)
-> 본래 act에는 startActivityForRes(intent.액티비티 구분이름)
-> resultCode 값으로 구분하여 getXXXExtra함
what append
객체 전달하기
parcelable(Intent 를 통해 객체를 전달 할 때 필요한 인터페이스)
-> 전달 받은 족에서 객체를 복원할 때 필요한 정보를 가진 부분을 의미
-> A라는 객체에서 만든 값을 B가 복원할 수 있도록
-> 4대 구성요소가 독립적인 실행단위로 따로따로 동작하기 때문에
Main Activity
import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_second.*
class MainActivity : AppCompatActivity() {
val SECOND_ACTIVITY =1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener { view ->
var t1 = TestClass()
t1.data10 =100
t1.data20 = "문자열1"
var intent = Intent(this, SecondActivity :: class.java)
intent.putExtra("test1",t1) //t1객체가 가지고 있는 메서드를 호출하여 파슬 클래스 타입 객체 넘김
startActivityForResult(intent, SECOND_ACTIVITY)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == Activity.RESULT_OK){
var t2 = data?.getParcelableExtra<TestClass>("test2")
textView.text = "t2.data10 : ${t2?.data10}\n"
textView.text = "t2.data20 : ${t2?.data20}"
}
}
}
putExtra(name,value) 메서드는 자료형 별로 메서드가 제공되기 때문에 타입을 가리지 않는다.
getXXXExtra(name,defualt) 메서드를 이용해 데이터를 가져온다. (XXX는 타입)
finish 하기 전에도 데이터 전달 가능 (to 본래 act) -> setResult(Result_OK, intent2 객체) -> 본래 act에는 startActivityForRes(intent.액티비티 구분이름) -> resultCode 값으로 구분하여 getXXXExtra함
what append
Main Activity
SecondActivity
Test Class