我试图将数据从活动传递到片段,但是无论我在哪里使用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参数,但还是没有运气。
谢谢:)
答案 0 :(得分:1)
您只是将类传递到列表中,我猜想newInstance
不会被调用,并且您的所有片段都将在OnBoardingPagerAdapter
中以不同的方式实例化,而无需接受任何参数。
答案 1 :(得分:1)
在下面的方法中:
onBoardingFragments = mutableListOf(
OnBoardingLocalitzacioFragment.newInstance(isFromSettings)::class,
OnBoardingPresentacioFragment::class,
OnBoardingNotificacionsFragment::class
)
您传递的是您尝试创建的class
而不是instance
的片段,newInstance
很有趣。我认为您是根据类在适配器中创建片段的新实例。因此您的参数为空。
这是示例代码:
onBoardingFragments = mutableListOf(
OnBoardingLocalitzacioFragment.newInstance(isFromSettings),
OnBoardingPresentacioFragment(),
OnBoardingNotificacionsFragment()
)