如何在 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()
}
假设我有一个名为“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()
}