Я пытаюсь передать данные из действия во фрагмент, но везде, где я использую 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 в разных методах, но все равно не повезло.
Спасибо :)
back in the fragment: где именно?
@VladyslavMatviienko в любом месте фрагмента. Аараон и savepopulation правы. Но все еще не мог найти обходной путь.
Вы просто передаете классы в свой список, я предполагаю, что newInstance никогда не вызывается, и все ваши фрагменты по-разному создаются в OnBoardingPagerAdapter без каких-либо аргументов.
В вашем методе ниже:
onBoardingFragments = mutableListOf(
OnBoardingLocalitzacioFragment.newInstance(isFromSettings)::class,
OnBoardingPresentacioFragment::class,
OnBoardingNotificacionsFragment::class
)
Вы передаете class вашего фрагмента, а не instance, который вы пытаетесь создать с помощью newInstance. Я думаю, вы создаете новый экземпляр своих фрагментов в своем адаптере из этого класса. Итак, ваши аргументы равны нулю.
Вот пример кода:
onBoardingFragments = mutableListOf(
OnBoardingLocalitzacioFragment.newInstance(isFromSettings),
OnBoardingPresentacioFragment(),
OnBoardingNotificacionsFragment()
)
предоставить код класса фрагмента