Kotlin: FragmentManager показывает ошибку при вызове из Fragment [работа с адаптером] - PullRequest
0 голосов
/ 24 марта 2020

AdapterClass:

class TeamsAdapter(
supportFragmentManager: FragmentManager,
teams_list: MutableList<Team>,
match_id: String
) : FragmentPagerAdapter(supportFragmentManager) {code}

Класс фрагмента:

lateinit var teamsAdapter: TeamsAdapter

teamsAdapter = TeamsAdapter(supportFragmentManager, match?.teams!!, matchId)

Ошибка: Unresolved reference: supportFragmentManager

Но весь код работает нормально, когда внутри Activity вместо Fragment Класс.

Ответы [ 4 ]

0 голосов
/ 24 марта 2020

Когда ваш фрагмент содержит ViewPager, который использует фрагменты, вы всегда должны использовать childFragmentManager для этого ViewPager, поскольку именно это позволяет FragmentManager правильно вкладывать эти фрагменты и обеспечивать правильное сохранение и восстановление их состояния.

0 голосов
/ 24 марта 2020

вы можете использовать parentFragmentManager или childFragmentManager для использования диспетчера фрагментов внутри фрагмента. Для использования диспетчера фрагментов нет необходимости использовать какой-либо тип приведения.

parentFragmentManager or getParentFragmentManager()

Возвращает FragmentManager для взаимодействия с фрагментами, связанными с активностью этого фрагмента. Обратите внимание, что это будет доступно немного раньше {@link #getActivity ()}, в течение времени с момента, когда фрагмент помещается в {@link FragmentTransaction}, пока он не будет зафиксирован и присоединен к своей активности. Если этот фрагмент является дочерним для другого Fragment, возвращаемый здесь FragmentManager, будет {@link #getChildFragmentManager ()} родителя. @throws IllegalStateException, если он не связан с транзакцией или хостом.

childFragmentManager or getChildFragmentManager()

Возвращает приватный FragmentManager для размещения и управления фрагментами внутри этого фрагмента.

Я только что прочитал, что вы изучаете что-то новое, поэтому я предлагаю лучше использовать лучшие практики. Иногда приведение приводит к ошибкам и сбоям, поэтому я предлагаю вам использовать их.

0 голосов
/ 24 марта 2020

Вам следует использовать supportFragmentManager, если вы поддерживаете устройство ниже API 14, в противном случае просто используйте fragmentManager

0 голосов
/ 24 марта 2020

Решается с помощью приведения, если вы используете фрагмент, затем приводите с контекстом

  fragmentManager = (activity as FragmentActivity).supportFragmentManager
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...