Я пытаюсь восстановить фрагмент в моем ViewPager при вращении, чтобы решить некоторые проблемы, и написал некоторый код, который отлично работает при обычном использовании, но когда я пытаюсь сделать его универсальной функцией для повторного использования, она не работает.
Все, что я пытаюсь сделать в childFragmentManager.fragments.find
лямбда-выражении с использованием моего переданного параметра, остается красным и неиспользуемым при попытке выполнить проверку IS.
Рабочий код
val studySurveyFragment = if (restoring) {
val fragment = childFragmentManager.fragments.find { it is StudySurveyFragment }
if (fragment == null) {
StudySurveyFragment()
} else {
fragment as StudySurveyFragment
}
} else {
StudySurveyFragment()
}
Моя попытка универсальной версии
create(StudySurveyFragment(), StudySurveyFragment::class.java)
fun <T> create(fragment: Fragment, fragmentClass: Class<T>): Fragment {
return if (restoring) {
val findFragment = childFragmentManager.fragments.find { it is fragmentClass }
if (findFragment == null) {
fragment
} else {
findFragment
}
} else {
fragment
}
}
Обновление: я также пытался сделать это, что скомпилирует, но проверкана самом деле не работает
childFragmentManager.fragments.find {it.javaClass.isInstance(fragmentClass)}
Примечание: я знаю, что это можно уменьшить с помощью некоторых операторов elvis, но я пытался сначала заставить его работать как положено ...