728x90
*본 글은 아래의 글 중 일부를 발췌, 번역한 글입니다.
https://www.androidly.net/223/android-intent-handling-between-activities-using-kotlin
1. 전달
- 도착 액티비티 입력시, activity::class.java 형식으로 입력 (subActivity.class가 아님)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val intent = Intent(this, subdActivity::class.java)
intent.putExtra("keyString", "Androidkey")
startActivity(nextIntent)
}
}
}
putExtra에는 다음과 같이 다양하게 전달 가능
2. 이동한 subActivity 수신
val bundle: Bundle? = intent.extras
val string: String? = intent.getString("keyString")
val myArray: ArrayList<String>? = intent.getStringArrayList("myArray")
3. Parcelable 혹은 Serializable Data 전달
1) Parcelable과 Serializable의 차이
(1) Parcelable은 Android SDK의 Interface
Serializable은 Java Interface
(2) Parcelable은 Parcel object안에 필요로 하는 데이터의 종류가 다 있으며, writeToParcel()메소드로 override 가능함
Serializable은 원하는 object를 구현해야함-
(3) Parcelable이 Serializable보다 빠름
2) Parcelable Data 전송
Kotlin에서는 writeToParcel() 메소드로 override할 때 @Parcelize annotations을 제공함
@Parcelize
data class Student(
val name: String = "Anupam",
val age: Int = 24
) : Parcelable
@Parcelize annotation를 사용하기 위해서는 build.gradle에 다음과 같이 추가해야함
android {
androidExtensions {
experimental = true
}
//..
....
}
val student = Student()
val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("studentData", student)
startActivity(intent)
3) Serializable Data 전송
data class Blog(
val name: String = "Androidly",
val year: Int = 2018
) : Serializable
val blog = Blog("a", 1)
val intent = Intent(this, OtherActivity::class.java)
intent.putExtra("blogData", blog as Serializable)
startActivity(intent)
Reference
https://www.androidly.net/223/android-intent-handling-between-activities-using-kotlin
728x90
'Dev > Kotlin' 카테고리의 다른 글
[Kotlin 기초] Boolean Array 일괄 초기화 방법 (0) | 2020.10.26 |
---|---|
[Kotlin] 증감 연산 함수 (0) | 2020.09.22 |
[Kotlin] @JvmField, @JvmStatic (0) | 2020.08.20 |
[Kotlin] null 가능성, lateinit, lazy (0) | 2020.08.19 |
[Kotlin] Random 코틀린 랜덤 예제 - Today's Luck (0) | 2019.10.11 |