首页 > 解决方案 > 如何在 Kotlin 中通过名称动态调用类

问题描述

假设我有一个名为“LoginFragment”的片段。我想在下面的添加事务中使用这个片段:

fTransaction.add(R.id.login_fragment, LoginFragment())

但我需要像这样动态地调用它:

val name = "LoginFragment"
fTransaction.add(R.id.login_fragment, name())

我该怎么做?谢谢

标签: androidclasskotlinandroid-fragmentsfragmentmanager

解决方案


如果你想Fragment通过它的名字来实例化 a ,你可以使用它FragmentFactory来实例化Fragment

try {
    val fragmentName = "LoginFragment"
    val fragmentFullName = "your.package.name.$fragmentName"
    val fragment = supportFragmentManager.fragmentFactory.instantiate(classLoader, fragmentFullName)
    supportFragmentManager
            .beginTransaction()
            .add(R.id.login_fragment, fragment)
            .commitNow()
} catch (e: java.lang.Exception) {
    e.printStackTrace()
}

推荐阅读