【发布时间】:2019-10-13 21:22:43
【问题描述】:
以下代码完全符合我的要求。
fun onButtonClick(@Suppress("UNUSED_PARAMETER") v: View) {
val intent = Intent(this, ImageActivity::class.java)
val bundle = Bundle()
orangeButton.setOnClickListener{
val parcel:ImageUrl = IMAGE_URL_ORANGE
bundle.putParcelable("key", parcel)
intent.putExtra(IMAGE_BUNDLE_NAME, bundle)
startActivity(intent)
}
redButton.setOnClickListener{
val parcel:ImageUrl = IMAGE_URL_RED
bundle.putParcelable("key", parcel)
intent.putExtra(IMAGE_BUNDLE_NAME, bundle)
startActivity(intent)
}
greenButton.setOnClickListener{
val parcel:ImageUrl = IMAGE_URL_GREEN
bundle.putParcelable("key", parcel)
intent.putExtra(IMAGE_BUNDLE_NAME, bundle)
startActivity(intent)
}
}
问题是这三种情况下的行为几乎相同。我该如何重构它?我尝试了以下方法,但它导致应用程序崩溃。
fun onButtonClick(@Suppress("UNUSED_PARAMETER") v: View) {
val intent = Intent(this, ImageActivity::class.java)
val bundle = Bundle()
lateinit var parcel:ImageUrl
orangeButton.setOnClickListener{
parcel = IMAGE_URL_ORANGE
}
redButton.setOnClickListener{
parcel = IMAGE_URL_RED
}
greenButton.setOnClickListener{
parcel = IMAGE_URL_GREEN
}
bundle.putParcelable("key", parcel)
intent.putExtra(IMAGE_BUNDLE_NAME, bundle)
startActivity(intent)
}
我可能应该使用某种 IF 语句,但是如何找到被点击按钮的 ID?
【问题讨论】:
标签: android kotlin android-intent android-activity refactoring