Фрагмент пуст при второй загрузке - PullRequest
0 голосов
/ 10 марта 2019

Навигация в приложении происходит через BottomNavigationView. На 1-й позиции у меня есть фрагмент, в котором есть кнопка для перехода к другому фрагменту. Первый раз он загружается и показывает все. Я снова нажимаю на 1-ю позицию в BotttomNavView, и мы возвращаемся к родительскому фрагменту (привязанному к 1-й позиции в BottomNavigationView). Но с этого момента, если я нажму кнопку и открою fragment, она всегда будет пустой.

Вот как выглядит мое управление фрагментами:

fun navigateTo(
            context: Context,
            fragment: BaseFragment,
            navigatable: Navigatable,
            addToBackStack: Boolean
    ) {
        val activity = ContextUtil.getActivityFromContext(context)
        val tag = fragment.javaClass.toString()
        val fragmentManager = (activity as BaseActivity).supportFragmentManager
        val transaction = fragmentManager.beginTransaction()
        if (fragmentManager.findFragmentByTag(fragment.javaClass.toString()) == null) {
            transaction.add(R.id.container, fragment, tag).hide(fragment)
        }
        val activeFragment = findVisibleFragment(context)
        transaction
                .apply {
                    if (activeFragment != null) {
                        hide(activeFragment)
                    }
                }
                .show(fragment)
                .apply {
                    if (addToBackStack) {
                        this.addToBackStack(tag)
                    }
                }
                .commit()
        navigatable.afterScreenTransition(fragment).invoke()
    }

Я провел эксперимент и обнаружил, что в моем pager fragment вызывается onAttach(), но все представления нулевые, onCreateView() не вызывается.

1 Ответ

0 голосов
/ 10 марта 2019

Итак, после дальнейших экспериментов я сделал supportFragmentManager.popBackStack(), прежде чем открывать 1-й фрагмент.Теперь открытие дочернего фрагмента не пустое.

...