Reputation: 2027
Is there a better way to write this code? Seems like Kotlin should be able to get me a cleaner version, but I cannot figure it out.
override fun onAttachFragment(fragment: Fragment?) {
super.onAttachFragment(fragment)
if (fragment is Step1Fragment) {
fragment.assignActivity(this)
return
}
if (fragment is Step2Fragment) {
fragment.assignActivity(this)
return
}
if (fragment is Step3Fragment) {
fragment.assignActivity(this)
return
}
if (fragment is Step4Fragment) {
fragment.assignActivity(this)
return
}
}
Upvotes: 4
Views: 539
Reputation: 12463
Step 1: Create an interface.
interface ActivityAssignable {
fun assignActivity(activity: Activity)
}
Step 2: Make your fragments implement that interface.
class Step1Fragment: Fragment(), ActivityAssignable {
override fun assignActivity(activity: Activity) { ... }
}
class Step2Fragment: Fragment(), ActivityAssignable {
override fun assignActivity(activity: Activity) { ... }
}
Step 3: Use that interface in your if statement
if (fragment is ActivityAssignable) {
fragment.assignActivity(this)
}
Step 4: PROFIT!
Upvotes: 1