У меня есть функция расширения Kotlin для добавления фрагмента, который находится в другом файле Kotlin.
fun Fragment.addFragment(tag: String?, id: Int, fragmentManager: FragmentManager) {
// will take care of adding the fragment.
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.add(id, this, tag)
fragmentTransaction.addToBackStack(tag)
fragmentTransaction.commit()
}
Но всякий раз, когда я использую эту функцию расширения для добавления фрагмента, я получаю этот сбой
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setNextAnim(int)' on a null object reference
Я использую эту функцию расширения следующим образом:
MyFragment().addFragment("MyFragment", R.id.frame, fragmentMaganer)
После приведенного выше утверждения, если я попытался отладить свой код, он успешно выполнялся до тех пор, пока
fragmentTransaction.commit()
но после этого в методе onStart() моей деятельности я столкнулся с проблемой NullPointerException
Но если я использую тот же код непосредственно в Activity следующим образом:
val myFragment = MyFragment()
val fragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.add(R.id.frame, myFragment, tag)
fragmentTransaction.addToBackStack(tag)
fragmentTransaction.commit()
тогда он работает нормально. Может кто-нибудь объяснить, почему он не работает с функцией расширения?
fun Fragment.addFragment()
? - person nhoxbypass   schedule 30.11.2017SupportFragmentManager
какSupportFragmentManager.addFragment()
- person Samuel Robert   schedule 04.12.2017