@sanke46

Как передать класс в метод {Kotlin}?

У меня есть метод куда надо передовать класс чтобы поменять фрагмент "Class" не принимает

fun startFragment(activity: FragmentActivity, clazz: Class<?>): Unit {

        var fragment =  clazz
        var fragmentManager = activity?.supportFragmentManager
        fragmentManager
                ?.beginTransaction()
                ?.replace(R.id.content_frame, fragment.newInstance())
                ?.commit()
    }


ошибку выдает там где fragment.newInstance(), Как решить эту проблему ?
  • Вопрос задан
  • 832 просмотра
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Вам правда там нужна рефлексия?
Попробуйте как-нибудь так:

inline fun <reified T:Fragment>startFragment(activity: FragmentActivity){

    var fragmentManager = activity?.supportFragmentManager
    fragmentManager
            ?.beginTransaction()
            ?.replace(R.id.content_frame,  T::class.java.newInstance())
            ?.commit()
}

// вызов
startFragment<MyFragment>(activity)


Но лучше будет просто передавать инстанс фрагмента:
fun startFragment(activity: FragmentActivity, fragment:Fragment){
    var fragmentManager = activity?.supportFragmentManager
    fragmentManager
            ?.beginTransaction()
            ?.replace(R.id.content_frame, fragment)
            ?.commit()
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы