如何在片段列表中找到特定的片段?



我有一个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)

最新更新