728x90
import java.util.Random

fun main(args: Array<String>) {   
   
    val random = Random()
    val num = random.nextInt(4)
    
    
    val stars = arrayOf("★☆☆☆☆", "★★☆☆☆", "★★★☆☆", "★★★★☆", "★★★★★")
    val rand_stars = stars.get(num)
    
    print("나의 Today's LUCK:" + rand_stars)
       
}

 

728x90
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

 

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

 

 

 

728x90

+ Recent posts