GetArguments () возвращает null

Я пытаюсь передать данные из действия во фрагмент, но везде, где я использую getArguments, он всегда равен нулю.

Вот мой фрагмент newInstance:

companion object {
    private var IS_FROM_SETTINGS : String = "IS_FROM_SETTINGS"
    fun newInstance(isFromSettings : Boolean):OnBoardingLocalitzacioFragment{
        val args = Bundle()
        args.putBoolean(IS_FROM_SETTINGS, isFromSettings)
        val fragment = OnBoardingLocalitzacioFragment()
        fragment.arguments = args
        return fragment
    }
}

В своей деятельности я создаю фрагмент, выполняющий:

 onBoardingFragments = mutableListOf(
            OnBoardingLocalitzacioFragment.newInstance(isFromSettings)::class,
            OnBoardingPresentacioFragment::class,
            OnBoardingNotificacionsFragment::class
    )

    adapter = OnBoardingPagerAdapter(supportFragmentManager, onBoardingFragments)

Затем вернемся к фрагменту:

arguments?.getBoolean(IS_FROM_SETTINGS)!!

Я пробовал использовать аргументы get в разных методах, но все равно не повезло.

Спасибо :)

предоставить код класса фрагмента

nikhil bansal 19.10.2018 12:01
back in the fragment: где именно?
Vladyslav Matviienko 19.10.2018 12:02

@VladyslavMatviienko в любом месте фрагмента. Аараон и savepopulation правы. Но все еще не мог найти обходной путь.

Nil Oleart 19.10.2018 15:03
0
3
185
2

Ответы 2

Вы просто передаете классы в свой список, я предполагаю, что newInstance никогда не вызывается, и все ваши фрагменты по-разному создаются в OnBoardingPagerAdapter без каких-либо аргументов.

В вашем методе ниже:

onBoardingFragments = mutableListOf(
            OnBoardingLocalitzacioFragment.newInstance(isFromSettings)::class,
            OnBoardingPresentacioFragment::class,
            OnBoardingNotificacionsFragment::class
    )

Вы передаете class вашего фрагмента, а не instance, который вы пытаетесь создать с помощью newInstance. Я думаю, вы создаете новый экземпляр своих фрагментов в своем адаптере из этого класса. Итак, ваши аргументы равны нулю.

Вот пример кода:

 onBoardingFragments = mutableListOf(
            OnBoardingLocalitzacioFragment.newInstance(isFromSettings),
            OnBoardingPresentacioFragment(),
            OnBoardingNotificacionsFragment()
    )

Другие вопросы по теме