*본 글은 아래의 글 중 일부를 발췌, 번역한 글입니다.
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
Android Intent Handling Between Activities Using Kotlin - Androidly
In this tutorial, we’ll be discussing Android Intents and implement them using Kotlin in our application. What Will You Learn? What are Intents? Types Of Intents? Using Intents Between Activities Sending Data Using Android Intents Using Parcelable and Seri
www.androidly.net
'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 |