android - 如何针对多种类型检查 IS

标签 android kotlin

有没有更好的方法来编写这段代码?看起来 Kotlin 应该能够给我一个更干净的版本,但我无法弄清楚。

    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
        }
    }

最佳答案

第 1 步:创建接口(interface)。

interface ActivityAssignable {
    fun assignActivity(activity: Activity)
}

第 2 步:让您的 fragment 实现该接口(interface)。

class Step1Fragment: Fragment(), ActivityAssignable {
    override fun assignActivity(activity: Activity) { ... }
}

class Step2Fragment: Fragment(), ActivityAssignable {
    override fun assignActivity(activity: Activity) { ... }
}

第 3 步:在您的 if 语句中使用该接口(interface)

if (fragment is ActivityAssignable) {
    fragment.assignActivity(this)
}

第 4 步:获利!

关于android - 如何针对多种类型检查 IS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57652345/

相关文章:

android - canvas.drawRect 是黑色而不是透明的

android - 如何在android中显示像facebook聊天头一样的下拉菜单

java.lang.UnsatisfiedLinkError : while importing two libraries built with . so 文件(ndk 文件)

kotlin - 有什么方法可以要求在 kotlin 中的类型参数上添加注释吗?

android - 当我在拦截器中抛出异常时改造崩溃

kotlin - 返回菊花链伴随对象的实例

constructor - Kotlin:在构造函数中初始化类属性

android - LogCat 不会显示我的日志

android - 单击该 ListItem 中的 RadioButton 时获取 ListItem id/位置。

java - 如何为应用内开发工具模拟 NFC 标签?