본문 바로가기

Dead Code/DEPRECATED-KOTLIN

[코틀린코드연습장] startActivityForResult(3) . object



인텐트로 오브젝트를 넘겨보자. 

별도로 클래스를 만들어서 넘겨본다.  




[별도로 만든 클래스]

class TestClass: Parcelable {
var data10 : Int = 0
var data20 : String? = null

companion object {
@JvmField
val CREATOR : Parcelable.Creator<TestClass> = object : Parcelable.Creator<TestClass> {
override fun createFromParcel(source: Parcel?): TestClass {
val test = TestClass()
test.data10 = source?.readInt()!!
test.data20 = source?.readString()
return test
}

override fun newArray(size: Int): Array<TestClass?> {
return arrayOfNulls<TestClass>(size)
}
}
}

override fun writeToParcel(dest: Parcel?, flags: Int) {
dest?.writeInt(data10)
dest?.writeString(data20)
}

override fun describeContents(): Int {
return 0
}
}



[메인 클래스]

class MainActivity : AppCompatActivity() {

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

a1_btn1.setOnClickListener {
var t1 = TestClass()
t1.data10 = 100
t1.data20 = "문자열1"

var intent = Intent(this, Main2Activity::class.java)
intent.putExtra("test1", t1)
startActivityForResult(intent, 1)

}
}

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

if (resultCode == Activity.RESULT_OK) {
var t2 = data?.getParcelableExtra<TestClass>("test2")
a1_txt2.text = "t2.data10 = ${t2?.data10}\n"
a1_txt2.append("t2.data20 = ${t2?.data20}")
}
}
}




[세컨 클래스]

class Main2Activity : AppCompatActivity() {

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

var t1 = intent.getParcelableExtra<TestClass>("test1")

a2_txt1.text = "t1.data10 = ${t1.data10}\n"
a2_txt1.append("t1.data20 = ${t1.data20}")

a2_btn1.setOnClickListener {
var t2 = TestClass()
t2.data10 = 200
t2.data20 = "문자열2"

var intent2 = Intent(this, MainActivity::class.java)
intent2.putExtra("test2", t2)
setResult(Activity.RESULT_OK, intent2)
finish()
}
}
}