如何在 Kotlin 中通过名称动态调用 class

How to call class by its name dynamically in Kotlin

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

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

但我需要像这样通过名称动态调用它:

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

我应该怎么做? 谢谢

如果你想用它的名字来实例化一个 Fragment 你可以使用 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()
}