我有一个fragments
的列表,并希望根据作为参数传入的fragment type
找到一个特定的列表。像这样:
private fun findFragment(findFragment: Fragment): Fragment {
fragments.forEach {
if (it is findFragment) {
return it
}
}
}
findFragment(MyFragment)
我不想发送实例,而是发送类型,如果该类型存在于列表中,则应该返回实例。我得到一个错误的if (it is findFragment)
说未解决的引用findMyFragment。
我该怎么做?
此错误是因为您的参数不是class
而只是变量。您不能将instanceof
或本例中的is
用于另一个变量。
在这种情况下,最接近的解决方案是使用片段的名称。像这样:
private fun findFragment(findFragment: String): Fragment? {
val fragments = listOf<Fragment>()
fragments.forEach {
if (it.javaClass.simpleName == findFragment) {
return it
}
}
return null
}
然后你可以调用这个方法:
findFragment(MyFragment::class.java.simpleName)