Property binding for Android Bundle arguments. Written for simple bundle unpacking for Kotlin users.
Add repository to your root build.gradle
repositories {
jcenter()
}
dependencies {
implementation 'com.idapgroup:argument-delegate:latest-version'
}
class ExampleActivity : Activity {
val userName: String by argumentDelegate()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// your activity setup code
Log.d("ExampleActivity", "userName - $userName")
}
}
Remember: Bundled argument name must have the same name as property have. For current example:
val bundle = Bundle().apply {
putString("userName", "John")
}
argumentDelegate is an extension function for Fragment and Activity. If you want to use it out of the Activity/Fragment then you should implement argumentWrapper block. Example:
class Example {
private lateinit var bundle: Bundle
private val wrapper = { a: Example -> a.bundle }
val userName: String by argumentDelegate(wrapper)
}